[Megoldva] apache/openssl -- valami baj van a certificate-tel

2018.04.06. 04:06
Ezt most minek néztem meg?!


[308]   0x00000000    undef      IMP     RW EXTref /opt/lib64/libclntsh.so.10 __tab
[309]   0x00000000    undef      IMP     RW EXTref /opt/lib64/libclntsh.so.10 __itab
[310]   0x00000000    undef      IMP     RW EXTref /opt/lib64/libclntsh.so.10 guesses
[311]   0x00000000    undef      IMP     RW EXTref /opt/lib64/libclntsh.so.10 tantab

Szerk: relax, én bénáztam, a 10-es még gyárilag oké, 11-től jött be a '-bexpall', ezt a tizest én rontottam el. A hibát érzékeltetendő ezt a kettőt nézzük össze: explist explist_so

Hozzászólások

>Most jön a meglepő hír: ugyanez elsőre megy linuxon.

innen lehet észrevenni, hogy már az alapötlet is hibás volt :(

Miert nem eroszakolod statikusan a linkelest? Vagy AIX-en nem mukodik a


gcc -o httpd httpd.o /usr/local/lib64/libcrypto.so.1.0.2

cimu fekete magia? Linuxon igy ki lehet eroszakolni, hogy mit hova linkeljen, es ebbol asszem ugyanugy statik linkeles lesz, mint a -lcrypto kapcsoloval.

Bar az az igazsag, hogy fura nekem ez az egesz. Elvben a libclntsh.so.12 csak akkor kerulhetne kepbe, ha a httpd Ora fuggoseggel fordulna (mondjuk egy imaginarius mod_auth_oracle modul okan). Ettol eltekintve a Makefile-oknak -lcrypto -lssl kapcsolokkal kellene operalniuk. Hogy ebbol hogy lesz -lclntsh... hacsak valahol valaki nem symlinkeli a libcrpyto.so -t a libclntsh.so.12-re akkor sehogy.
--
Blog | @hron84
Üzemeltető macik

Hát, szerintem ha egyvalamit érdemes lenne megnézni, az az, hogy Linuxon egy Oracle Instant Client 12.1 -beli libclntsh.so is exportálja-e mindezeket a szimbóleumokat:

^(BIO_|ERR_|SSLv23_|SSLv3_|TLSv1_|ssl23_|ssl3_|ssl_|tls1_|BZ2_|inflate|deflate)

Gondolom, hogy nem, mert akkor már kitört volna a parasztlázadás;)

Nem tort volna ki, ugyanis az AIX-szal ellentetben Linuxon a Oracle Instant Client nem resze az alaptelepitesnek, es forditaskor sosincs jelen a gepen. Vagyis eselytelen ahhoz linkelni a linker, futaskor meg azert van az a kis dictionary az ELF-ben, hogy tudja melyik fuggvenyt melyik libbol kell kikeresni.

Raadasul Linuxon a libclntsh.so szinte sosincs rajta a standard linker utvonalakon, az mindig kulon mokolas, hogy egyaltalan mukodjenek az ezt hasznalo stuffok.
--
Blog | @hron84
Üzemeltető macik

Szerintem ez a dinamikus linkelés fordítva van: AIX-on lehet (és szokás) beleírni a binárisba azt, hogy melyik shared objectből jöjjenek az egyes szimbóleumok; linuxon viszont az 'ahogy esik, úgy puffan' elv érvényesül, ezért lehet LD_PRELOAD-változókkal haxorkodni... akarom mondani, wrappereket készíteni (pl. runsocks)