>
>python3 sitescan.py -c www.example.org
 ____  _ _       ____
/ ___|(_) |_ ___/ ___|  ___ __ _ _ __
\___ \| | __/ _ \___ \ / __/ _` | '_  \
 ___) | | ||  __/___) | (_| (_| | | | |
|____/|_|\__\___|____/ \___\__,_|_| |_|

更新历史
#------------------------------------------------------------#
  SiteScan  V1.1.0
网站爬取功能改为基于selenium和phantomjs的动态爬取
#------------------------------------------------------------#
  SiteScan  V1.0.2
优先批量获取子域名ip
对爬取到的可能为上传点或文件包含保存
#------------------------------------------------------------#
  SiteScan  V1.0
获取网站ip,运行语言,服务器类型。
对网站进行静态爬取,过滤大部分无效链接,生成目录结构,但伪静态会产生大量目录
对疑似注入点的链接进行简单的sql布尔注入测试
对所有网页进行xss测试
对ip使用nmap扫描
使用字典对网站子域名穷举
#------------------------------------------------------------#

使用本工具对本站进行测试

本工具不具有利用功能,只进行简单的测试。

>python3 sitescan.py -c http://octfive.cn/
 ____  _ _       ____
/ ___|(_) |_ ___/ ___|  ___ __ _ _ __
\___ \| | __/ _ \___ \ / __/ _` | '_  \
 ___) | | ||  __/___) | (_| (_| | | | |
|____/|_|\__\___|____/ \___\__,_|_| |_|

 Ip address: 115.159.160.21
 HostName:nginx

# 剩余爬取链接个数10

扫描链接总数:96

Total time:
2.2512378692626953

目录结构

/
/annoying-apache
/annoying-apache/feed
/author/jason_sheh
/author/jason_sheh/feed
/author/jason_sheh/page/2
/author/jason_sheh/page/3
/author/jason_sheh/page/4
/category/tech
/category/tech/feed
/category/tech/page/2
/category/tech/page/3
/category/tech/page/4
/comments/feed
/didi-written-test-analysis-1
/didi-written-test-analysis-1/feed
/didi-written-test-analysis-2
/didi-written-test-analysis-2/feed
/didi-written-test-analysis-3
/didi-written-test-analysis-3/feed
/didi-written-test-analysis-4
/didi-written-test-analysis-4/feed
/error-based-sqli
/error-based-sqli/feed
/feed
/page/2
/page/3
/page/4
/whitehat-readingnote-1
/whitehat-readingnote-1/feed
/whitehat-readingnote-2
/whitehat-readingnote-2/feed
/whitehat-readingnote-3
/whitehat-readingnote-3/feed
/whitehat-readingnote-4
/whitehat-readingnote-4/feed
/whitehat-readingnote-5
/whitehat-readingnote-5/feed
/whitehat-readingnote-6
/whitehat-readingnote-6/feed
/whitehat-readingnote-7
/whitehat-readingnote-7/feed
/wp-includes
/wp-json/oembed/1.0
/wp-json/oembed/1.0/embed
/wp-login.php
/xmlrpc%e6%9a%b4%e5%8a%9b%e7%a0%b4%e8%a7%a3%e6%94%bb%e5%87%bb
/xmlrpc%e6%9a%b4%e5%8a%9b%e7%a0%b4%e8%a7%a3%e6%94%bb%e5%87%bb/feed
/xmlrpc.php
/zabbix-2-2-x-3-0-x-sql-%e6%b3%a8%e5%85%a5%e6%bc%8f%e6%b4%9e%e5%88%86%e6%9e%90
/zabbix-2-2-x-3-0-x-sql-%e6%b3%a8%e5%85%a5%e6%bc%8f%e6%b4%9e%e5%88%86%e6%9e%90/feed

检测SQL注入:
连接错误,响应码为404

检测XSS:
可能存在漏洞; http://octfive.cn/wp-login.php
可能存在漏洞; http://octfive.cn/wp-login.php?action=lostpassword

检测敏感目录...
http://octfive.cn/wp-login.php
http://octfive.cn/readme.html
http://octfive.cn/license.txt
http://octfive.cn/robots.txt

端口扫描...
----------------------------------------------------
Host : 115.159.160.21 ()
State : up
----------
Protocol : tcp
port    state   name
22      open    ssh
80      open    http
465     closed  smtps

子域名爆破...
test.octfive.cn         115.159.160.21
# 剩余子域名个数0000


Total time:
742.7299683094025

外部某平台报告公司产品存在Webshell漏洞。老板指定身为安全工程师的你全权协调处理此事,请思考,你需要做些什么

首先webshell并不是漏洞种类,可能是指公司服务器中存在webshell。

紧急解决安全威胁

先应与外部平台保持联系,确认webshell存在路径同时对所有服务器进行彻底的扫描,检查是否存在其他webshell。

确认攻击者上传webshell所利用的漏洞,并及时修补。

如果有可能对用户账户安全性产生危害的,应及时通知所有用户并补偿。

损失调查

评估造成的损失与危害,对相关产品负责人进行批评教育。

提高公司整体安全性

编写相关安全报告,并定期对员工进行安全方面的培训。

定时进行漏洞扫描,关注各类突发安全事件,建立完善的漏洞响应机制。

自行编写一段代码,要求代码包含UAF(Use After Free)漏洞。假设该代码运行在内核中,简述普通用户如何利用代码中的UAF漏洞提升权限

暂时不会…

简述客户端App签名验证的原理和基本过程

Android对每一个Apk文件都会进行签名,在Apk文件安装时,系统会对其签名信息进行比对,判断程序的完整性,从而决定该Apk文件是否可以安装,在一定程度上达到安全的目的。
给定一个Apk文件,解压,可以看到一个META-INFO文件夹,在该文件夹下有三个文件:分别为MANIFEST.MF、CERT.SF和CERT.RSA。这三个文件分别表征以下含义:
(1)MANIFEST.MF:这是摘要文件。程序遍历Apk包中的所有文件(entry),对非文件夹非签名文件的文件,逐个用SHA1生成摘要信息,再用Base64进行编码。如果你改变了apk包中的文件,那么在apk安装校验时,改变后的文件摘要信息与MANIFEST.MF的检验信息不同,于是程序就不能成功安装。
说明:如果攻击者修改了程序的内容,有重新生成了新的摘要,那么就可以通过验证,所以这是一个非常简单的验证。
(2)CERT.SF:这是对摘要的签名文件。对前一步生成的MANIFEST.MF,使用SHA1-RSA算法,用开发者的私钥进行签名。在安装时只能使用公钥才能解密它。解密之后,将它与未加密的摘要信息(即,MANIFEST.MF文件)进行对比,如果相符,则表明内容没有被异常修改。
说明:在这一步,即使开发者修改了程序内容,并生成了新的摘要文件,但是攻击者没有开发者的私钥,所以不能生成正确的签名文件(CERT.SF)。系统在对程序进行验证的时候,用开发者公钥对不正确的签名文件进行解密,得到的结果和摘要文件(MANIFEST.MF)对应不起来,所以不能通过检验,不能成功安装文件。
(3)CERT.RSA文件中保存了公钥、所采用的加密算法等信息。
说明:系统对签名文件进行解密,所需要的公钥就是从这个文件里取出来的。
结论:从上面的总结可以看出,META-INFO里面的说那个文件环环相扣,从而保证Android程序的安全性。(只是防止开发者的程序不被攻击者修改,如果开发者的公私钥对被攻击者得到或者开发者开发出攻击程序,Android系统都无法检测出来。)

简述一次https通信建立的全过程

客户端浏览器连接到Web服务器,发出建立安全连接通道的请求。 服务器接受客户端请求,发送服务器证书做为响应。 客户端验证服务器证书的有效性,如果验证通过,则用服务器证书中包含的服务器公钥加密一个会话密钥,并将加密后的数据和客户端用户证书一起发送给服务器。 服务器收到客户端发来的加密数据后,先验证客户端证书的有效性,如果验证通过,则用其专用的私有密钥解开加密数据,获得会话密钥。然后服务器用客户端证书中包含的公钥加密该会话密钥,并将加密后的数据发送给客户端浏览器。 客户端在收到服务器发来的加密数据后,用其专用的私有密钥解开加密数据,把得到的会话密钥与原来发出去的会话密钥进行对比,如果两把密钥一致,说明服务器身份已经通过认证,双方将使用这把会话密钥建立安全连接通道。

请分析滴滴出行APP的登录功能可能面临的安全风险或漏洞,并提供相应的解决方案。

请说出常见的安全漏洞类型及漏洞原理

Linux系统下,关于权限描述正确的是:
正确答案: C D 你的答案: B (错误)
文件权限描述”-rwxrw-r-x”对应权限值为754
文件权限描述”drw-rw-rw-“中的首字符’d’表示该文件为软链接文件
文件权限值为723,表示其他用户可以执行该文件
文件权限值744,表示除了文件所有者外其他用户不可执行

解析:文件权限描述”-rwxrw-r-x”对应权限值为765
首字符表示文件类型。d是目录文件,l是链接文件,-是普通文件,p是管道
r=4 w=2 x=1

同一进程下的线程可以共享以下?
正确答案: B D 你的答案: A B (错误)
stack
data section
register set
file fd

解析:线程共享的肯定有stack,代码段(code segment),数据段(data section),进程打开的文件描述符(file fd)

下列哪部分代码片段如果使用不当会导致安全漏洞?
正确答案: A C D 你的答案: A B C (错误)

<?php
...
$sql = "select * from admin where id=".$_GET['id'];
$result = mysql_query($sql);
...
<?php
$username = $_GET['name'];
echo  htmlspecialchars($username);
...
<?php
...
$file = $_GET['file'];
echo file_get_contents($file);
...
<?php
$string = $_GET['text'];
$pattern = '/(\w+) (\d+), (\d+)/ie';
$replacement = '${1}1,$3';
echo preg_replace($pattern, $replacement, $string);
?>

解析:第一个选项没有任何过滤,明显存在SQL注入漏洞.
htmlspecialchars()在该场景下是安全的因为仅用‘’’无法构造XSS攻击,需要注意默认不过滤单引号。
file_get_contents($file)直接包含了文件,存在文件包含漏洞。
/e 修饰符已经被弃用了。使用 preg_replace_callback() 代替。参见文档中 PREG_REPLACE_EVAL 关于安全风险的更多信息。

文件完整性校验所使用的加密算法有哪些
正确答案: A B 你的答案: A B (正确)
md5
sha1
des
rsa

浏览器和服务器在基于https进行请求链接到数据传输过程中,用到了如下哪些技术:
正确答案: A B C D 你的答案: A B C D (正确)
非对称加密技术
对称加密技术
散列(哈希)算法
数字证书

解析:HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议是一套加密传输的协议,使用了非对称加密,对称加密以及HASH算法。
握手过程的简单描述如下:
1.浏览器将自己支持的一套加密规则发送给网站。
2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
3.获得网站证书之后浏览器要做以下工作:
a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
c) 使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
4.网站接收浏览器发来的数据之后要做以下的操作:
a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
b) 使用密码加密一段握手消息,发送给浏览器。
5.浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。

下列哪些函数可能导致缓冲区溢出?
正确答案: A B C 你的答案: B C (错误)
wcscpy
vsprintf
scanf
strcat_s

解析:函数 sprintf()和 vsprintf()是用来格式化文本和将其存入缓冲区的通用函数。它们可以用直接的方式模仿 strcpy() 行为。换句话说,使用 sprintf() 和 vsprintf() 与使用 strcpy() 一样,都很容易对程序造成缓冲区溢出。
sprintf() 的许多版本带有使用这种函数的更安全的方法。可以指定格式字符串本身每个自变量的精度。
sscanf()、fscanf()、vfscanf()、vscanf()、vsscanf()
scanf系列的函数也设计得很差。目的地缓冲区也可能会发生溢出。
同样地,我们用设置宽度也可以解决这个问题。
有关字符串合并的API
例如:strcat, wcscat等
替代的Safe CRT函数:strcat_s

iOS平台上常见的Hook框架有:
正确答案: D 你的答案: D (正确)
Xposed
Intent Fuzz
Drozer
Substrate

解析:Xposed为Android框架,drozer为Android安全审计与攻击框架

黑客通过以下哪种攻击方式,可能大批量获取网站注册用户的身份信息
正确答案: A B C 你的答案: A B C (正确)
XSS
CSRF
越权
以上都不可以

使用以下哪些工具可以直接调试安卓app代码逻辑?
正确答案: C D 你的答案: C D (正确)
baksmali
ddms
IDA
gdb

解析:baksmali是apk编译/反编译工具,ddms是Android开发环境中的Dalvik虚拟机调试监控服务,IDA反汇编工具。

Android 应用中导致HTTPS中间人攻击的原因有?
正确答案: A B C 你的答案: A B C (正确)
没有对SSL证书校验
没有对主机名进行校验
SSL证书被泄露
使用WIFI连接网络

攻击者采用某种手段,使用户访问某网站时获得一个其他网站的IP地址,从而将用户的访问引导到其他网站,这种攻击手段称为?
正确答案: B 你的答案: B (正确)
ARP欺骗攻击
DNS欺骗攻击
暴力攻击
重放攻击

解析:ARP欺骗攻击通过冒充网关或其他主机使得到达网关或主机的流量通过攻击进行转发。

下面关于 RSA 算法的描述,不正确的是?
正确答案: D 你的答案: D (正确)
RSA是非对称加密算法
RSA的运行速度相比 AES 算法要慢很多
RSA的安全性依赖于大数分解
TLS/SSL协议中RSA的公钥长度一般为128位或256位

解析:密钥长度一般只是指模值的位长度。目前主流可选值:1024、2048、3072、4096

攻击者截获并记录了从A到B的数据,然后又从早些时候所截获的数据中提取出信息重新发往B称为
正确答案: D 你的答案: D (正确)
中间人攻击
口令猜测器和字典攻击
强力攻击
重放攻击

解析:重放攻击是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。中间人攻击是指拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。

以下哪一项不是针对操作体统的安全保护措施?
正确答案: B 你的答案: B (正确)
SELINUX
nProtect
DEP
ASLR

解析:SELINUX目的在于明确的指明某个进程可以访问哪些资源,禁止访问没有权限的资源。DEP即数据执行保护,这是Windows的一项安全机制,主要用来防止病毒和其他安全威胁对系统造成破坏。ASLR是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的的一种技术。nProtect是一种键盘加密保护系统。

以下哪个算法不是对称加密算法
正确答案: C 你的答案: C (正确)
DES
RC5
ECDH
AES

文件aaa的访问权限为rw-r–r–,现要增加所有用户的执行权限和同组用户的写权限,下列哪些命令是正确的?
正确答案: A D 你的答案: A D (正确)
chmod a+x g+w aaa
chmod 764 aaa
chmod o+x g+w aaa
chmod 775 aaa

解析:a=all,u=user,g=group,o=other。1=r,2=w,4=x。

文件aaa的内容如下:

1001:1
1002:2
1003:1
1004:2
期望处理aaa文件得到以下输入结果:
1001
1003
以下命令能满足的有
正确答案: C D   你的答案: A C (错误)

grep "1$" aaa | awk -d: '{print $1}'
grep "1$" aaa | cut -d: -f0
sed '/:2/d' aaa | sed 's/:1//g'
awk -F: '{if ($2==1){print $1}}' aaa

解析:
grep “1$” aaa | awk -d: ‘{print $1}’ 应该改为grep “1$” aaa | awk -F: ‘{print $1}’,以’:’为分隔符。
grep “1$” aaa | cut -d: -f0 应该改为grep “1$” aaa | cut -d: -f1,获取第一个分割内容。
sed ‘/:2/d’ aaa | sed ‘s/:1//g’ 删除含有:2的行,删除’:1′
awk -F: ‘{if ($2==1){print $1}}’ aaa 以’:’为分隔符,如果第二个内容==1则打印第一个内容。

下列关于SSL的描述中,正确的有
正确答案: A B C 你的答案: A B C D (错误)

SSL即安全套接字层,是一种安全协议,它为网络的通信提供私密性,工作在应用层和传输层之间。
SSL能加密数据以防止数据中途被窃取,维护数据的完整性,确保数据在传输过程中不被改变。
SSL实际上是共同工作的两个协议,SSL记录协议和SSL握手协议。
SSL握手协议为高层协议提供基本的安全服务。

解析:SSL记录协议为高层协议提供基本的安全服务。

以下说法中,哪些说法是正确的
正确答案: A C D 你的答案: A C D (正确)

缓冲区溢出指的是通过向程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他的指令,以达到攻击的目的。
在C/C++语言中,缓冲区溢出的任何尝试通常都会被语言本身自动检测并阻止。
检查缓冲区长度、GS编译选项、堆栈保护可以防御溢出攻击
溢出是程序设计者设计时的不足所带来的错误。

以下哪种加密方案是相对最安全的?
正确答案: C 你的答案: C (正确)
RSA加密算法,密钥长度512位
AES加密算法,选择ECB模式,密钥长度128位
AES加密算法,选择CBC模式,密钥长度128位
DES算法

解析:RSA1024目前已经不被认为是安全的加密算法,
ECB:是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。
CBC:是一种循环模式,前一个分组的密文和当前分组的明文异或操作后再加密,这样做的目的是增强破解难度。
80 bits of security = RSA 1024
112 bits of security = 3DES = RSA 2048
128 bits of security = AES-128 = RSA 3072 = ECC 256
256 bits of security = AES-256 = RSA 15360

滴滴出行2017秋招安全岗笔试真题汇总

部分汇编语言题目因能力有限暂时不包含在内

下面对于Cookie的描述中错误的是?
正确答案: A 你的答案: A (正确)
Cookie通过HTTP Headers从浏览器端发送到服务器端并存储在服务器端
Cookie的大小限制在4kb左右,对于复杂的存储需求来说是不够用的
如果在一台计算机中安装多个浏览器,每个浏览器都会以独立的空间存放cookie
由于在HTTP请求中的Cookie是明文传递的,所以安全性成问题

解析:Cookie从服务器端发送到浏览器端并存储在浏览器端。

安卓系统中所有App进程是下面的哪个进程fork产生的
正确答案: C 你的答案: C (正确)
init
system_server
zygote
kthreadd

解析:Zygote进程,这个是Android框架的主要进程,所有的App进程以及系统服务进程SystemServer都是由Zygote进程Fork出来的,zygote还是在init进程之后才被创建的。

以下关于内存文件mmap映射的说法不正确的是
正确答案: C 你的答案: D (错误)
当文件被映射到进程地址空间后,进程可以像访问普通内存一样对文件进行访问
子进程会继承父进程通过mmap映射的地址空间
使用mmap必须指定映射到内存的具体文件
同一个文件的不同段内容可以分别被映射到不同的内存空间

解析:mmap的作用是将进程的虚拟地址空间和文件在磁盘的位置做一一映射。不用指定在内存中的文件,磁盘中的文件即可

常见的网络嗅探器,以下哪个不是?
正确答案: B 你的答案: B (正确)
tcpdump
wvs
wireshark
sniffit

解析:TcpDump可以将网络中传送的数据包完全截获下来提供分析。Wireshark是一个网络封包分析软件,sniffit是一个网络监听软件,而wvs是著名的漏洞扫描工具。

以下算法不能用于文本加密的是
正确答案: C 你的答案: C (正确)
RC4
RSA
MD5
DES

解析:非对称加密算法:RSA,DSA/DSS 。对称加密算法:AES,RC4,3DES 。HASH算法:MD5,SHA1,SHA256

下列关于 Android 数字签名描述错误的是:
正确答案: D 你的答案: A (错误)
所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序
Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证
数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。
如果要正式发布一个Android程序,可以使用集成开发工具生成的调试证书来发布。

解析:数字签名由应用程序的作者完成,并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。
在调试模式下, ADT会自动的使用debug密钥为应用程序签名,因此我们可以直接运行程序。
debug签名的应用程序有这样两个风险:
1.debug签名的应用程序不能在Android Market上架销售,它会强制你使用自己的签名;
2.debug.keystore在不同的机器上所生成的可能都不一样,就意味着如果你换了机器进行apk版本升级,那么将会出现上面那种程序不能覆盖安装的问题。

凯撒(Caesar)密码是一种基于字符替换的对称式加密方法,它是通过对26个英文字母循环移位和替换来进行编码的。设待加密的消息为”Didi Family”,加密后的密文是”Nsns PkwsvI”,则采用的密匙k是
正确答案: A 你的答案: A (正确)
10
11
13
15
解析:对应字母间隔距离。

当一个HTTPS 站点的证书存在问题时,浏览器就会出现警告信息以提醒浏览者注意,下列描述中哪一条不是导致出现提示的必然原因?
正确答案: D 你的答案: B (错误)
证书过期
证书没有被浏览器信任
证书的CN与实际站点不符
浏览器找不到对应的证书颁发机构

解析:我觉得我的答案是正确的,这题存疑。