这个命名方式,大概率是Rust语言
对于rust语言逆向,一般采用动态调试分析的方法
主要还是看汇编,因为F5根本看不出来啥东西。。。
从if比较处,可以看到成功和失败两个结果
那么这个比较绝对很关键
进入后发现,啥也没啊?
坏了,得看汇编,为代码估计又出问题了
发现了check2,果然为代码啥也看不到
对比check1-2
发现是在检测输入的字符串的字符类型,还是冲突的,不管了继续分析
下面可以看到失败
往下滑动可以看到成功
后面都是正常输出flag了
⚫️⚫️⚫️渗透测试,#删库,数据删除 拿数据库 木马注入 破解,提权,Dns动持⚫️⚫️⚫️
#黑客接单 @逆向破解 #渗透
@changwaiguang
对于rust语言逆向,一般采用动态调试分析的方法
主要还是看汇编,因为F5根本看不出来啥东西。。。
从if比较处,可以看到成功和失败两个结果
那么这个比较绝对很关键
进入后发现,啥也没啊?
坏了,得看汇编,为代码估计又出问题了
发现了check2,果然为代码啥也看不到
对比check1-2
发现是在检测输入的字符串的字符类型,还是冲突的,不管了继续分析
下面可以看到失败
往下滑动可以看到成功
后面都是正常输出flag了
⚫️⚫️⚫️渗透测试,#删库,数据删除 拿数据库 木马注入 破解,提权,Dns动持⚫️⚫️⚫️
#黑客接单 @逆向破解 #渗透
@changwaiguang
绕过安全狗的sql注入:
这里先解决一下绕过安全狗的方式,在常见的方式中,我们都采用垃圾字符填充的方式来绕过安全狗,虽然效果很好,但是较为复杂,也容易出现被狗咬伤的情况,所以为了解决这一现状,小秦同学翻阅之后发现了分块传输的方式来绕过安全狗。但是分块传输目前来看只能适用于post请求。get请求还是比较难说。
以sql-labs为例:
在sqli-labs的第十一关,我们发现了可以用post请求。先正常看看过滤哪些字符,这里开门见山,直接把'union select (database()),2#。这个东西进行了过滤
⚫️⚫️⚫️渗透测试,#删库,数据删除 拿数据库 木马注入 破解,提权,Dns动持⚫️⚫️⚫️
#黑客接单 @逆向破解 #渗透
@changwaiguang
这里先解决一下绕过安全狗的方式,在常见的方式中,我们都采用垃圾字符填充的方式来绕过安全狗,虽然效果很好,但是较为复杂,也容易出现被狗咬伤的情况,所以为了解决这一现状,小秦同学翻阅之后发现了分块传输的方式来绕过安全狗。但是分块传输目前来看只能适用于post请求。get请求还是比较难说。
以sql-labs为例:
在sqli-labs的第十一关,我们发现了可以用post请求。先正常看看过滤哪些字符,这里开门见山,直接把'union select (database()),2#。这个东西进行了过滤
⚫️⚫️⚫️渗透测试,#删库,数据删除 拿数据库 木马注入 破解,提权,Dns动持⚫️⚫️⚫️
#黑客接单 @逆向破解 #渗透
@changwaiguang
STRUTS2的getClassLoader漏洞利用
在struts2任何一个action运行之前,一旦接受到用户提交参数xx=zzzzz时,就由Ognl负责调用对应的当前action的setXxx方法,至于set方法到底是干什么的,其实不重要,里面的逻辑也不重要,我们只关注这个方法调用了,参数传递了。这种对属性的改变,有时候是可以很大程度的影响后续复杂逻辑。
Object是java的基础类,所有的class生成的对象,都会继承Object的所有属性和方法,因此当前action无论是什么代码,必须有Object自带的getClass方法,这个方法会返回一个Class对象,Class对象又一定会有getClassLoader方法,最终在每个action都可以
上传webshell的可能性研究
多次的远程代码执行漏洞洗礼,我一直在脑海里模拟“ServletContext被控制了,这次能干什么”,究竟有哪些路线,可以通往代码执行的领域。
比如:Struts2会去servletContext里取到一个值,然后把它作为Ognl执行掉。这个太简单了,我自己都不信。
Ognl的Context树形结构
servletContext被转换成Map,变成了图中的application子项,这个位址很尴尬,如果是上一层Node,从上到下找到value Stack,确实有实现这个思路的可能,但现在看来,这条路断了,它不支持找到父节点。
任何一个Action的classLoader都是org.apache.catalina.loader.WebappClassLoader,这是漏洞的源头。
⚫️⚫️⚫️渗透测试,#删库,数据删除 拿数据库 木马注入 破解,提权,Dns动持⚫️⚫️⚫️
#黑客接单 @逆向破解 #渗透
@changwaiguang
在struts2任何一个action运行之前,一旦接受到用户提交参数xx=zzzzz时,就由Ognl负责调用对应的当前action的setXxx方法,至于set方法到底是干什么的,其实不重要,里面的逻辑也不重要,我们只关注这个方法调用了,参数传递了。这种对属性的改变,有时候是可以很大程度的影响后续复杂逻辑。
Object是java的基础类,所有的class生成的对象,都会继承Object的所有属性和方法,因此当前action无论是什么代码,必须有Object自带的getClass方法,这个方法会返回一个Class对象,Class对象又一定会有getClassLoader方法,最终在每个action都可以
上传webshell的可能性研究
多次的远程代码执行漏洞洗礼,我一直在脑海里模拟“ServletContext被控制了,这次能干什么”,究竟有哪些路线,可以通往代码执行的领域。
比如:Struts2会去servletContext里取到一个值,然后把它作为Ognl执行掉。这个太简单了,我自己都不信。
Ognl的Context树形结构
servletContext被转换成Map,变成了图中的application子项,这个位址很尴尬,如果是上一层Node,从上到下找到value Stack,确实有实现这个思路的可能,但现在看来,这条路断了,它不支持找到父节点。
任何一个Action的classLoader都是org.apache.catalina.loader.WebappClassLoader,这是漏洞的源头。
⚫️⚫️⚫️渗透测试,#删库,数据删除 拿数据库 木马注入 破解,提权,Dns动持⚫️⚫️⚫️
#黑客接单 @逆向破解 #渗透
@changwaiguang
Zabbix SQL Injection
该漏洞存在于httpmon.php脚本中,未登录用户也可访问。
这是由于Zabbix预先设定了一个guest用户,未登录用户都被设定为guest用户的访问权限。
如果guest用户被禁用,将不能访问httpmon.php脚本,利用该漏洞。
可以在管理员的管理面板中禁用guest用户。
从下图中可以看出来applications参数存在sql注入。
进入了$application变量中,跟踪add2favorites函数
进入$values数组的value_id中,再往下跟踪就可以发现变量没有经过任何过滤进入到sql语句中
变量处理经过了一层mysql_real_escape_string函数的过滤。
在上面那个漏洞中,下面的语句可以读取管理员的用户名与密码md5的hash值
⚫️⚫️⚫️渗透测试,#删库,数据删除 拿数据库 木马注入 破解,提权,Dns动持⚫️⚫️⚫️
#黑客接单 @逆向破解 #渗透
@changwaiguang
该漏洞存在于httpmon.php脚本中,未登录用户也可访问。
这是由于Zabbix预先设定了一个guest用户,未登录用户都被设定为guest用户的访问权限。
如果guest用户被禁用,将不能访问httpmon.php脚本,利用该漏洞。
可以在管理员的管理面板中禁用guest用户。
从下图中可以看出来applications参数存在sql注入。
进入了$application变量中,跟踪add2favorites函数
进入$values数组的value_id中,再往下跟踪就可以发现变量没有经过任何过滤进入到sql语句中
变量处理经过了一层mysql_real_escape_string函数的过滤。
在上面那个漏洞中,下面的语句可以读取管理员的用户名与密码md5的hash值
⚫️⚫️⚫️渗透测试,#删库,数据删除 拿数据库 木马注入 破解,提权,Dns动持⚫️⚫️⚫️
#黑客接单 @逆向破解 #渗透
@changwaiguang
控制端获取当前已经上线主机信息接口:/getlive
控制端要得到当前主机存活信息就要构造如下请求信息
请求头:
{"pwd":密码加密后MD5值}
身份验证成功后即可如图得到响应的信息
控制端向服务器发布任务接口:/addtask
该接口依赖 ./lib/baseser.py 中的 add_task() 方法
当控制端发送下发任务请求时,该接口会检查控制端的密码,然后根据控制端提供木马唯一ID进行ID合法性校验,校验成功后就会将 cmd 里密文进行解密后与该木马的唯一ID进行绑定,木马请求下载 Payload 时就根据其自身的ID获取对应的任务
控制端要构造如下请求头
{"pwd":MD5加密的密码,"key":木马唯一身份ID,"cmd":base64密文}
base64密文:{"sleeptime": "", "cdm": "你要执行的命令"}
成功则响应状态码为 200
响应正文:{"info":发布成功或失败的提示信息}
处理控制端要删除某台上线主机的接口:/killhost
该接口依赖 ./lib/baseser.py 中的 del_host_info() 方法
当控制端请求该接口时,首先会校验控制端提供的密码是否合法,然后校验提供的木马唯一ID值是否合法,校验成功后,就会根据其提供的木马的唯一ID值来清除服务器存储的木马的唯一ID值和其ID绑定的 AES 秘钥
⚫️⚫️⚫️渗透测试,#删库,数据删除 拿数据库 木马注入 破解,提权,Dns动持⚫️⚫️⚫️
#黑客接单 @逆向破解 #渗透
@changwaiguang
控制端要得到当前主机存活信息就要构造如下请求信息
请求头:
{"pwd":密码加密后MD5值}
身份验证成功后即可如图得到响应的信息
控制端向服务器发布任务接口:/addtask
该接口依赖 ./lib/baseser.py 中的 add_task() 方法
当控制端发送下发任务请求时,该接口会检查控制端的密码,然后根据控制端提供木马唯一ID进行ID合法性校验,校验成功后就会将 cmd 里密文进行解密后与该木马的唯一ID进行绑定,木马请求下载 Payload 时就根据其自身的ID获取对应的任务
控制端要构造如下请求头
{"pwd":MD5加密的密码,"key":木马唯一身份ID,"cmd":base64密文}
base64密文:{"sleeptime": "", "cdm": "你要执行的命令"}
成功则响应状态码为 200
响应正文:{"info":发布成功或失败的提示信息}
处理控制端要删除某台上线主机的接口:/killhost
该接口依赖 ./lib/baseser.py 中的 del_host_info() 方法
当控制端请求该接口时,首先会校验控制端提供的密码是否合法,然后校验提供的木马唯一ID值是否合法,校验成功后,就会根据其提供的木马的唯一ID值来清除服务器存储的木马的唯一ID值和其ID绑定的 AES 秘钥
⚫️⚫️⚫️渗透测试,#删库,数据删除 拿数据库 木马注入 破解,提权,Dns动持⚫️⚫️⚫️
#黑客接单 @逆向破解 #渗透
@changwaiguang
❤1
在struts2任何一个action运行之前,一旦接受到用户提交参数xx=zzzzz时,就由Ognl负责调用对应的当前action的setXxx方法,至于set方法到底是干什么的,其实不重要,里面的逻辑也不重要,我们只关注这个方法调用了,参数传递了。这种对属性的改变,有时候是可以很大程度的影响后续复杂逻辑。
Object是java的基础类,所有的class生成的对象,都会继承Object的所有属性和方法,因此当前action无论是什么代码,必须有Object自带的getClass方法,这个方法会返回一个Class对象,Class对象又一定会有getClassLoader方法,最终在每个action都可以
上传webshell的可能性研究
多次的远程代码执行漏洞洗礼,我一直在脑海里模拟“ServletContext被控制了,这次能干什么”,究竟有哪些路线,可以通往代码执行的领域。
比如:Struts2会去servletContext里取到一个值,然后把它作为Ognl执行掉。这个太简单了,我自己都不信。
Ognl的Context树形结构
servletContext被转换成Map,变成了图中的application子项,这个位址很尴尬,如果是上一层Node,从上到下找到value Stack,确实有实现这个思路的可能,但现在看来,这条路断了,它不支持找到父节点。
任何一个Action的classLoader都是org.apache.catalina.loader.WebappClassLoader,这是漏洞的源头。
⚫️⚫️⚫️渗透测试,#删库,数据删除 拿数据库 木马注入 破解,提权,Dns动持⚫️⚫️⚫️
#黑客接单 @逆向破解 #渗透
@changwaiguang
Object是java的基础类,所有的class生成的对象,都会继承Object的所有属性和方法,因此当前action无论是什么代码,必须有Object自带的getClass方法,这个方法会返回一个Class对象,Class对象又一定会有getClassLoader方法,最终在每个action都可以
上传webshell的可能性研究
多次的远程代码执行漏洞洗礼,我一直在脑海里模拟“ServletContext被控制了,这次能干什么”,究竟有哪些路线,可以通往代码执行的领域。
比如:Struts2会去servletContext里取到一个值,然后把它作为Ognl执行掉。这个太简单了,我自己都不信。
Ognl的Context树形结构
servletContext被转换成Map,变成了图中的application子项,这个位址很尴尬,如果是上一层Node,从上到下找到value Stack,确实有实现这个思路的可能,但现在看来,这条路断了,它不支持找到父节点。
任何一个Action的classLoader都是org.apache.catalina.loader.WebappClassLoader,这是漏洞的源头。
⚫️⚫️⚫️渗透测试,#删库,数据删除 拿数据库 木马注入 破解,提权,Dns动持⚫️⚫️⚫️
#黑客接单 @逆向破解 #渗透
@changwaiguang
越权
首先使用功能点添加一次申报,点击编辑,抓包
可以看到是使用id控制返回的数据的
服务端没有进行鉴权,修改id可返回其他用户的数据,其他接口也是一样
越权删除.还是在提交申报那里,添加文件,抓包
并没有返回文件路径,但返回了id,所以要配合刚才的越权接口使用
成功解析
⚫️⚫️⚫️渗透测试,#删库,数据删除 拿数据库 木马注入 破解,提权,Dns动持⚫️⚫️⚫️
#黑客接单 @逆向破解 #渗透
@changwaiguang
首先使用功能点添加一次申报,点击编辑,抓包
可以看到是使用id控制返回的数据的
服务端没有进行鉴权,修改id可返回其他用户的数据,其他接口也是一样
越权删除.还是在提交申报那里,添加文件,抓包
并没有返回文件路径,但返回了id,所以要配合刚才的越权接口使用
成功解析
⚫️⚫️⚫️渗透测试,#删库,数据删除 拿数据库 木马注入 破解,提权,Dns动持⚫️⚫️⚫️
#黑客接单 @逆向破解 #渗透
@changwaiguang
LDAP概述
对于那些并不熟悉Lightwieght Directory Access Protocol (LDAP)人来讲,它大概像是一个目录信息。虽然LDAP在很多平台被使用,但在windows的域环境中它却是 Active Directory Services (ADS)的核心,ADS负责windows域的认证和授权,但也储存了大量的信息,这些信息包括但不限于域用户,计算机用户,域用户组,安全策略和软件更新。每一个对象都有多种属性与之关联,并且其中大部分的属性都可以通过LDAP查询。比如每一个用户都有一个”Created”的属性包含了账号创建时间。同样的每一个账户都有一个” ServicePrincipleName”属性,这也是本文接下来的重点。
微软的文档中是这样陈述的:”ServicePrincipleName(SPN)是客户端用来唯一标识一个服务实例的名称”,在略读后发现这大概为了便利widnows域中的Kerberos认证,但我们可以用它来做一些其他的事,对于我们来说,多值的ServicePrincipleName是很方便的。因为在Active Directory中任何一个用户和计算机对象都储存了账户在域中的运行的服务信息。所以这就可以很方便的定位像IIS、SQL Server,及LDAP。同样也可以很方便的查询到对应的用户在哪里登陆(比如域管理员)。这相对来说要简单些,因为SPN有一个标准化的命令约定。SPN格式为SERVICE/HOST,但有时也会包含端口像 SERVICE/HOST:PORT。 比如,如果一个域用户曾在acme.com域中运行DNS和SQL Server服务
⚫️⚫️⚫️渗透测试,#删库,数据删除 拿数据库 木马注入 破解,提权,Dns动持⚫️⚫️⚫️
#黑客接单 @逆向破解 #渗透
@changwaiguang
对于那些并不熟悉Lightwieght Directory Access Protocol (LDAP)人来讲,它大概像是一个目录信息。虽然LDAP在很多平台被使用,但在windows的域环境中它却是 Active Directory Services (ADS)的核心,ADS负责windows域的认证和授权,但也储存了大量的信息,这些信息包括但不限于域用户,计算机用户,域用户组,安全策略和软件更新。每一个对象都有多种属性与之关联,并且其中大部分的属性都可以通过LDAP查询。比如每一个用户都有一个”Created”的属性包含了账号创建时间。同样的每一个账户都有一个” ServicePrincipleName”属性,这也是本文接下来的重点。
微软的文档中是这样陈述的:”ServicePrincipleName(SPN)是客户端用来唯一标识一个服务实例的名称”,在略读后发现这大概为了便利widnows域中的Kerberos认证,但我们可以用它来做一些其他的事,对于我们来说,多值的ServicePrincipleName是很方便的。因为在Active Directory中任何一个用户和计算机对象都储存了账户在域中的运行的服务信息。所以这就可以很方便的定位像IIS、SQL Server,及LDAP。同样也可以很方便的查询到对应的用户在哪里登陆(比如域管理员)。这相对来说要简单些,因为SPN有一个标准化的命令约定。SPN格式为SERVICE/HOST,但有时也会包含端口像 SERVICE/HOST:PORT。 比如,如果一个域用户曾在acme.com域中运行DNS和SQL Server服务
⚫️⚫️⚫️渗透测试,#删库,数据删除 拿数据库 木马注入 破解,提权,Dns动持⚫️⚫️⚫️
#黑客接单 @逆向破解 #渗透
@changwaiguang