这两天着手ldap注入的扫描插件。
可以分为几个点
LDAP环境选用
LDAP结构
LDAP语法
LDAP命令
该篇慢慢补充,之后再进行拆分。
关于bwapp中的ldap
花了一个晚上的时间,下载了bwapp-box,打开。
几个困惑的点:
php ldap_connect()函数
打开bwapp的ldap页面,有 login、password、server、base dn四个填空项。
填写提交后,只提示 认证错误或者服务器错误。
此时遇到的第一个问题是,server是什么?
于是打开
/var/www/bWAPP
路径下的ldap_connect.php文件
在下列语句后加了判断连接成功与否的语句
$ds=ldap_connect($server);
[ 添加 ]
if($ds === false || $ds <= 0){ echo '<p>service connect false!!!!!!</p>'; } else{ echo '<p>success!!!!!!!!!!!!!</p>'; print_r($ds); }
结果是,无论server输入什么,都不会报错。
对比 php ldap的文档,ldap_connect()是会返回false与true的,初以为是bwapp中重写了php ldap,从而不用搭建服务器,做了一个伪的ldap。
其实是:
如果服务器端是 OpenLDAP 2.x.x 或更高版本,那么此函数将始终返回一个LDAP连接标识符,而永远不会失败。实际的连接动作将在接下来调用 ldap_* 函数[通常是ldap_bind()]时执行。
(http://www.jinbuguo.com/php/php-ldap.html)
那么应该bwapp中如何判断连接成功与否呢?
$r = @ldap_bind($ds, $login, $password);
去掉@,开启这一句的报错,则能够在前端页面中看到错误原因。
是否真的有ldap服务器
因为ldap比较偏门,且ldap的注入则更为偏门,所以资料比较少。
google一遍,发现大部分都没有细说bwapp - ldap的
比如 youtube视频 , 讲解bwapp中各种注入,居然跳过了ldap;
某圈中讲解,对这一项表示太难不做;
或者说了半天等于没说,最后来一句,连接server(https://hydrasky.com/network-security/how-to-authenticate-client-computers-using-ldap/)
可能对的解释:
server参数需要自己再搭建ldap服务器或者有其他服务器可以填写,这样子的话,bwapp只是提供了一个web端,服务器端要自己准备,没什么用。
(https://github.com/theand-fork/bwapp-code/issues/1)
结论:自己搞吧
bwapp搭建选用windows+openldap
这一方面已经搭建好了,但是还有一些小点不明白:
1. 为什么修改conf之后某些操作失效了
2. 对于环境安装的整个过程顺序还有意义还未能理解透彻
等理解透彻后并整理完毕再补充这一篇
Failed to Read Entry dc=maxcrc,dc=com
需要初始化数据
ldapmodify -x -a -D cn=manager,dc=maxcrc,dc=com -w secret -f ..\maxcrc.ldif
ldap_search报错:
ldap_search(): supplied argument is not a valid ldap link resource
原因
因代码写错,ldap_bind()的接收参数与ldap_connect()一样,将ldap_connect()的覆盖掉了,所以将 ldap_bind()的返回对象传入给第一个参数,而第一个参数要求的是ldap_connect()的返回对象。
ldap命令
开启:slapd.exe -d 1 -f ./slapd.conf