Skip to content

Latest commit

 

History

History
586 lines (356 loc) · 13.8 KB

渗透篇.md

File metadata and controls

586 lines (356 loc) · 13.8 KB

UpdateTime:2018.11.17

  1. 介绍一下自认为有趣的挖洞经历

挖洞也有分很多种类型,一种是以渗透、一种是以找漏洞为主,如果是前者会想各种办法获取权限继而获取想要的的东西完成渗透目标,这类跟HW类似,目标各种漏洞不算,要有Shell,服务器权限才给分,这才是最接近实战渗透,跟某部门有合作的话也是属于这种打击网络犯罪获得权限、传销数据、组织架构,服务器权限、等......

如果是以挖洞为主,还需要测试每个点的细节,有完整流程,不能遗漏掉任何一个点,这是一个工作责任。




  1. 你平时用的比较多的漏洞是哪些?相关漏洞的原理?以及对应漏洞的修复方案?

SQL注入、密码组合,前者防护分为几种,CDN -> Web -> 数据库 -> 主机,设置最小权限来应对。 密码组合根据个人习惯

这类问题大幅度官是想了解哪块技术你用的多,掌握的程度如何。




  1. php/java反序列化漏洞的原理?解决方案?

php中围绕着serialize(),unserialize()这两个函数,序列化就是把一个对象变成可以传输的字符串,如果服务器能够接收我们反序列化过的字符串、并且未经过滤的把其中的变量直接放进这些魔术方法里面的话,就容易造成很严重的漏洞了。

O:7:"chybeta":1:{s:4:"test";s:3:"123";}

这里的O代表存储的是对象(object),假如你给serialize()传入的是一个数组,那它会变成字母a。7表示对象的名称有7个字符。"chybeta"表示对象的名称。1表示有一个值。{s:4:"test";s:3:"123";}中,s表示字符串,4表示该字符串的长度,"test"为字符串的名称,之后的类似。 当传给 unserialize() 的参数可控时,我们可以通过传入一个精心构造的序列化字符串,从而控制对象内部的变量甚至是函数。

JAVA Java 序列化是指把 Java 对象转换为字节序列的过程便于保存在内存、文件、数据库中,ObjectOutputStream类的 writeObject() 方法可以实现序列化。 Java 反序列化是指把字节序列恢复为 Java 对象的过程,ObjectInputStream 类的 readObject() 方法用于反序列化。




  1. 如果一台服务器被入侵后,你会如何做应急响应?
1.准备相关的工具,查后门等工具
2.初步判断事件类型,事件等级。
3.抑制范围,隔离使爱害面不继续扩大
4.查找原因,封堵攻击源。
5.业务恢复正常水平.
6.总结,报告,并修复、监控

以上是常规的回答,想知道你是否有这方面应急相关的经验,像这类问题甲方面试比较多。




  1. 你平时使用哪些工具?以及对应工具的特点?
  • AWVS、Masscan、BurpSuite
  • AWVS常规漏洞扫描,masscan快速查找端口,burp重复提交数据包

想知道是否有自己开发工具,如果没有你对每个安全工具有哪些独特的见解以及别人不知道的技巧用法。如:awvs如何批量扫描?burpsuite如何爆破401、脱库等、等等...




  1. 如果遇到waf的情况下如何进行sql注入/上传Webshell怎么做?请写出曾经绕过WAF的经过(SQLi,XSS,上传漏洞选一)

PHP上传,无法上传php、解析、后台没有办法拿到,只有一处点可以上传。通过Windows特性shell.php::$DATA,是一个项目管理系统

想知道你遇到WAF是放弃,还是继续研究绕过的这个能力。




  1. 如何判断sql注入,有哪些方法

提交错误语句是否有异常,除此之外这些显示的错误可以通过sleep,修眠语句执行5秒等,除此之外通过DNSlog判断是还有传回值




  1. 介绍 SQL 注入漏洞成因,如何防范?注入方式有哪些?除了数据库数据,利用方式还有哪些?
select * from news where id = '$SQL';
当程序执行访问新闻等一些操作都会执行到sql语句进行调用,如果在此调用过程中,提交了不合法的数据,而数据库无法识别则会报错。也就是一切输入都是有害的。

注入类型有6种,可以参考SQLMAP,报错、盲注、联合、时间、内联、堆叠
注入提交方式:GET、POST、Cookies、文件头
利用方式:具体看什么数据库类型,像SQLSERVER可以命令执行,MYSQL写shell有些权限大也可以执行命令但是条件是在lINUX环境下。
防范:边界,CDN -> 脚本语言过滤 -> 数据库过滤最小权限 -> 主机



  1. 为什么有的时候没有错误回显

没有进行错误打印或者错误屏蔽


  1. 宽字符注入的原理?如何利用宽字符注入漏洞,payload如何构造?

在mysql中使用了gbk编码,占用2个字节,而mysql的一种特性,GBK是多字节编码,它认为两个字节就代表一个汉字,所以%df时候会和转义符\ %5c进行结合,所以单引号就逃逸了出来,当第一个字节的ascii码大于128,就可以了。




  1. CRLF注入的原理

CRLF注入在OWASP 里面被称为HTTP拆分攻击(HTTP Splitting)CRLF是”回车 + 换行”(\r\n)的简称,在HTTP协议中,HTTP Header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP 内容并显示出来。所以,一旦我们能够控制HTTP 消息头中的字符,注入一些恶意的换行




  1. mysql的网站注入,5.0以上和5.0以下有什么区别?
  • 5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。
  • 5.0以下是多用户单操作,5.0以上是多用户多操做。



  1. php.ini可以设置哪些安全特性
  • 禁用PHP函数
  • 允许include或打开访问远程资源



  1. php的%00截断的原理是什么?
因为在C语言中字符串的结束标识符%00是结束符号,而PHP就是C写的,所以继承了C的特性,所以判断为%00是结束符号不会继续往后执行
条件:PHP<5.3.29,且GPC关闭



  1. webshell检测,有哪些方法
  • grep、关键词、关键函数
  • 安全狗、D盾



  1. php的LFI,本地包含漏洞原理是什么?写一段带有漏洞的代码。手工的话如何发掘?如果无报错回显,你是怎么遍历文件的?
if ($_GET['file']){
    include $_GET['file'];
}

包含的文件设置为变量,并且无过滤导致可以调用恶意文件 还可以对远程文件包含,但需要开启allow_url_include = ON 通过测试参数的地方进行本地文件/etc/passwd等包含 如何存在漏洞而且没有回显,有可能没有显示在页面而是在网页源代码中,除些可以利用DNSlog进行获取包含的信息。从index.php文件一级级往读取 也可以利用PHP封装协议读取文件




  1. 说说常见的中间件解析漏洞利用方式
  • 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%00.php
  • Apache

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



  1. mysql的用户名密码是存放在那张表里面?mysql密码采用哪种加密方式?
  • mysql -> users
  • SHA1



  1. Windows、Linux、数据库的加固降权思路,任选其一
  • 禁用root
  • 禁止远程访问
  • 禁止写入
  • 单独帐号
  • 禁止执行system等函数



  1. 你使用什么工具来判断系统是否存在后门
  • Chkrootkit
  • Rkhunter



  1. 如何绕过CDN获取目标网站真实IP,谈谈你的思路?
  • 类似phpinfo、网站信息
  • C段、子域名
  • 历史解析记录
  • DDOS
  • zmap全网扫描识别http头
  • 网站域名管理员邮箱,注册过的域名等相关信息关联



  1. 如果给你一个网站,你的渗透测试思路是什么? 在获取书面授权的前提下。

其实这是一个非常大的话题,渗透大部分思路都是如此,而面试官是想听到你回答不一样的答案让人眼前一亮 如何才做到让人眼前一亮都需要看你的经验,把你实践的过程拿出来说,以及遇到什么问题如何解决,最终取得成果 渗透其它大同小异,而做为渗透者知识的储备、基础扎实、耐心、细心都是必不可少。




  1. 谈一谈Windows系统与Linux系统提权的思路?
  • Windows
Windows服务比较多所以方法也如此,最基本的就是Exp提权,数据库SQLServer、MYSQL UDF等、第三方软件提权。
除此之外提权的成功与否和在于信息收集也非常重要,你对这台服务器和管理员了解多少。

Linux

Linux也是类似,除了EXP或者高版本的内核无法提权之外,通过第三方软件和服务,除了提权也可以考虑把这台机器当跳版,
达到先进入内网安全防线最弱的地方寻找有用的信息,再迂回战术。

linux权限提升

  • Brief
  • 枚举脚本
  • 以root权限运行的程序
  • 用户安装的软件
  • 弱口令或者明文密码
  • 只能内部访问的服务
  • suid和guid错误配置
  • 滥用sudo权限
  • 以root权限运行的脚本文件
  • 错误的路径配置
  • 计划任务
  • 未挂载的文件系统
  • NFS共享
  • 通过键盘记录仪窃取密码
  • 其它有用的和提权相关的东西
  • 内核提权



  1. 列举出您所知道的所有开源组件高危漏洞(十个以上)
Tomcat
Nginx
Apache
Hadhoop
Docker
Jenkins
Zenoss
Jboss
MongoDB
Redis
GlassFish



  1. 反弹 shell 的常用命令?一般常反弹哪一种 shell?为什么?
  • nc -lvvp 7777 -e /bin/bash
  • bash是交互式,否则像useradd无法执行交互



  1. CMD命令行如何查询远程终端开放端口
  • tasklist /svc
  • netstat -ano



  1. 服务器为IIS+PHP+MySQL,发现root权限注入漏洞,讲讲你的渗透思路
  • 可以读取IIS信息,知道路径,如果像WAMMP类似构建,通过@@datadir知道数据库路径也可以猜测网站路径。
  • 或者直接写Shell



  1. 请写出Mysql5数据库中查询库’helloworld’中’users’表所有列名的语句

select COLUMN_NAME from information_schema.COLUMNS where table_name = 'your_table_name' and table_schema = 'your_db_name';




  1. 下面这段代码存在漏洞吗?如果存在请说出存在什么漏洞并利用
http://www.exp.com/1.php  
<?php  
$s_func = $_GET['s_func'];
$info = $_GET['info'];
$s_func($info);
?>

代码执行,通过assert调用




  1. udf提权

MySQL可以自定义函数,通过自定义函数做到类似xp_cmdshell效果




  1. SQL头注入点
  • UserAgent
  • Referer
  • Cookie
  • X-FOR-IP



  1. php中命令执行涉及到的函数
eval()
assert()
system()
exec()
shell_exec()



  1. SSRF漏洞的成因 防御 绕过

模拟服务器对其它资源进行请求 IP探测,如果想漏洞利用必需要构造好Payload 禁止跳转,限制协议,内外网限制,URL限制 针对IP格式




  1. mysql写shell有几种方法

outfile、dumpfile、开启log写webshell




  1. Metasploit 打开反向监听的命令
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp



  1. 应急响应的步骤
1.准备已经编译好的工具以及取证分析等工具干净可靠放U盘
2.初步判断事件的类型,是被入侵、ddos还是其它的原因
3.首先抑制范围、影响范围,隔离使受害面不继续扩大。
4.寻找原因,封堵攻击源。
5.把业务恢复至正常水平
6.监控有无异常,报告、管理环节的自省和改进措施。



  1. 有哪些反向代理的工具?

reGeirg、EW、lcx、Ngrok、frp




  1. 有什么比较曲折的渗透经历

这个问题想知道你工作渗透到什么样的程度,只是简单的漏扫搬砖,还是有毅力坚持完成整个渗透,如:对目标不放弃,坚持一个月最终通过各种手段,曲折的过程拿下目标。




UpdateTime:2019.5.11

  1. 怎么查找域控

方法有很多 

1.通过DNS查询 

dig -t SRV _gc._tcp.lab.ropnop.com  

dig -t SRV _ldap._tcp.lab.ropnop.com  

dig -t SRV _kerberos._tcp.lab.ropnop.com  

dig -t SRV _kpasswd._tcp.lab.ropnop.com 

2.端口扫描 

域服务器都会开启389端口,所以可以通过扫描端口进行识别。 

3.其实很多域环境里,DNS服务器就是域控制根本不需要怎么找。 

4.各种命令 

dsquery 

net group "Domain controllers" 

nltest /DCLIST:pentest.com 

...... 

  1. PHP 作为弱类型语言,在底层它是怎么判断变量的类型的

  2. ARP 攻击的原理(讲出具体的流程),如何发现并防御 ARP 攻击

  3. 渗透大企业简单还是小站点简单,为什么


大企业目标资产较为多,攻击者只需要找到一个点,而企业安全人员要防的则一个面。 

其实我认为越小的站越难渗透,这里有很多方面不细说。 

  1. 内网如何反弹 shell,反弹的 shell 流量如何隐蔽

  2. 除了 TCPIP 协议,如何将内网数据传递出来(内网环境有着严格防御与审查)