사용자를 LDAP에 추가하는 PHP 스크립트를 작성하려고합니다. 이를 위해 필자는 "addldapuser.sh"라는 제목의 쉘 스크립트를 가지고 있는데,이 쉘 스크립트는 사용자/화면 이름/암호 조합을 가져 와서 LDAP에 추가합니다. 이 스크립트는 제대로 작동합니다. 우리는 사용자가 웹 양식에 정보를 입력 할 수있게하고 싶습니다. 그러면 웹 양식에서 해당 스크립트를 호출하고 사용자를 LDAP에 올바르게 추가합니다. addldapuser 스크립트는 현재 루트 권한으로 실행해야하며 보안 문제를 인식하고 있지만 나중에 처리 할 수 있습니다. 나는 내가 생각하거나 생각할 수있는 모든 것을 시도해 보았고, 내가 생각할 수있는 모든 허락을 주었고, 뿌리 뽑을 수있는 모든 것을 주었고, 잠시 동안 아파치로 돌아 다녔다. 이제는 아이디어가 없다.PHP에서 루트로 셸 스크립트를 실행 하시겠습니까?
$scrName = $_POST['screenname'];
$usrName = $_POST['username'];
$pass = $_POST['password'];
if (isset($_POST['submit']))
{
$out = nl2br(shell_exec("sudo /EasyLDAP/old_scripts/addldapuser.sh " . $usrName . " " . $scrName . " " . $pass));
}
다시 한번, 나는 이것이 영원히 우리 모두를 파괴하는 해커에 종료 보장 끔찍한 생각입니다 알지만, 내 상사가 나에게 적어도이 방식으로 작동하고 싶어.
필자는 입력을 최소한으로 위생해야한다는 것을 알고 있으며, 이는 정시에 처리 될 것입니다.
을 많은 시스템에서'sudo' 실제 청각 장애 쉘없이 실행할 수 없습니다. sudoers 파일에서'requiretty'를 찾으십시오. SELinux 나 AppArmor 같은 것을 돌리고 있다면 이것도 금지되어있을 것입니다. –
또한, 실행하기 전에'escapeshellcmd()'를 호출하거나 이름 입력에서'escapeshellarg()'를 호출해야합니다. –
Michael이 지적했듯이이 스크립트는 무서운 것입니다. 며칠 안에 해킹 당할 것입니다. 왜 LDAP 용 PHP 함수를 사용하지 않습니까? 왜 LDAP 스크립트가 sudo privs를 필요로합니까? – Brad